Показать сообщение отдельно
  #1  
Старый 11.04.2008, 13:37
step step вне форума
Прохожий
 
Регистрация: 11.04.2008
Сообщения: 4
Репутация: 10
По умолчанию Работа с Canvas

Такая вот проблема .. Рисую сетку на image1.canvas
как сделать так чтобы при изменении размеров окна и соответственно image1 происходила перерисовка новой сетки на более большой размер.. ?

вот что получается при запуске в маленьком окне:

а это уже при разворачивании окна:


ниже код процидуры прорисовки сетки
Цитата:

procedure TForm1.FormPaint(Sender: TObject);

function cx(X: integer): integer;
begin
Result:=X;
end;
function cy(Y: integer): integer;
begin
Result:=image1.Height-Y;
end;


var
i: integer;
h: integer;
w: integer;
s: integer; // отступ поля

greedstep: integer;
begin

with image1.Canvas do
begin
greedstep:=20;
S:=20;
h:=round(image1.Height/greedstep)*greedstep; // Выста поля сетки
w:=round(image1.Width/greedstep)*greedstep; // Ширина поля

pen.Color:=130;
pen.Width:=1;
pen.Style:=psDot;
for i:=round(s/greedstep) to round ((h-s)/greedstep) do
begin
moveto(cx(s),cy(i*greedstep));
lineto(cx(round(w/greedstep)*greedstep-s),cy(i*greedstep));
end;

for i:=round(s/greedstep) to round ((w-s)/greedstep) do
begin
moveto(cx(i*greedstep),cy(s));
lineto(cx(i*greedstep),cy(round(h/greedstep)*greedstep-s));
end;
end;

end;
Ответить с цитированием