Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Canvas.LineTo


Автор: asdf 23.9.2004, 22:48
типа на клик исполняется этот код
Цитата
with drawgrid1 do
  begin
  point1.x:=x*(DefaultColWidth+GridLineWidth);
  point1.y:=y*(DefaultRowHeight+GridLineWidth);
  Canvas.Penpos:=point1;
  Canvas.pen.Color:=clPurple;
  Canvas.LineTo((x+1)*(DefaultColWidth+GridLineWidth), (y+1)*(DefaultRowHeight+GridLineWidth));
  point1.x:=(x+1)*(DefaultColWidth+GridLineWidth);
  point1.y:=y*(DefaultRowHeight+GridLineWidth);
  Canvas.PenPos:=point1;
        Canvas.LineTo(x*(DefaultColWidth+GridLineWidth), (y+1)*(DefaultRowHeight+GridLineWidth));
  end;

при следующем клике предыдущий рисунок исчезает.
ну, наверна, как сохранять рисунок дольше?

Автор: Illusion Dolphin 23.9.2004, 23:55
shurick
Рисовать на виртуальном битмапе и при onpaint прорисовывать его (как и после onclick).

Автор: asdf 24.9.2004, 18:08
Цитата
Рисовать на виртуальном битмапе и при onpaint прорисовывать его (как и после onclick).

sample.gif

Автор: Атос 24.9.2004, 19:22
Код

TMyForm =...
  ....
  FBmp: TBitmap;
  procedure OnCreate(...);
  procedure OnClick(...);
  procedure OnDrawGridDrawCell(...); // атач на драугрид или что там у тебя еще
end;

procedure OnCreate(...);
begin
 FBmp := TBitmap.Create;
 with FBmp do begin
    ...
    Canvas.FillRect(...);
 end;
end;

procedure OnClick(...);
begin
 with FBmp do begin
    Canvas.LineTo(...); ...  // рисуем то что ты хотел
 end;
 DrawGrid.Invalidate; // или как там у тя называется комп :) для того, чтобы сработало DrawGridDrawCell
end;

procedure DrawGridDrawCell(...);
begin
  DrawGrid.Canvas.Draw(rect.left, rect.top, FBmp);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)