[Delphi] Ресайз Image во время работы программы

У Image стоят anchors, чтобы он расширялся вместе с формой.
по кнопочке:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
with Image1.Canvas do
begin
Pen.Color:=clRed;
Pen.Width := 3;
MoveTo(0,Image1.Height div 2);
for i:=0 to Image1.Width do
begin
LineTo(i,round(-sin(i/Image1.width*10)*Image1.Height/2+Image1.Height/2;
end;
end;
end;
запускаем, жмём кнопку:

ресайзим форму, жмём кнопку:

Размеры изменяются (Image.widht, Image.Height однако на "новом месте" ничего не рисуется

Canvas.StretchDraw
запускаем, ресайзим, жмём кнопочку - вуаля:

ресайзим ещё чуть-чуть и жмём кнопочку:

В общем, умеет менять размеры до первого рисования

и каким образом ты предлагаешь его использовать?
На евент WM_SIZE, или как он там называется (может, там, onResize) вызываешь стретчдро.
Image1.Canvas.StretchDraw(Image1.ClientRect,Image1.Picture.Graphic);
убожество и не работает:



он рисует картинку в заданный прямоугольник.
А в моём случае - он не раздвигает "видимую часть" картинки на новые размеры


Image1.Free;
Image1:=TImage.Create(Self);
Image1.Top,Left,Width,Height:=...
Image1.Parent:=Self;
правда ексепшн вылетает, когда канвас сжимается до нулевой высоты....
ну ничего я это констрэйнтсами подправлю..

надо ресайзить и то и другое и делать Update
Image1->Canvas->Width += 100;
Image1->Picture->Bitmap->Width += 100;
Image1->Update;
Че-то вроде этого по-моему должно быть.
респекты
Оставить комментарий
yolki
как сделать это правильно?А то она ресайзится только до первого рисования. после этого ресайз не работает
Точнее, канва не увеличивается больше того размера, на котором начали рисовать