[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);
убожество и не работает:
ууу а обещают, что работает
он рисует картинку в заданный прямоугольник.
А в моём случае - он не раздвигает "видимую часть" картинки на новые размеры
самое интересное, что если использовать Label вместо Image, то работает!
Там фигня в том, что есть отдельно Image, а есть отдельно Canvas. И как они связываются..
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
как сделать это правильно?А то она ресайзится только до первого рисования. после этого ресайз не работает
Точнее, канва не увеличивается больше того размера, на котором начали рисовать