Простенькая ? Щаз ! Аж два раза .
Короче, написал я вот такую кяозябру ... ( После энного числа итераций )
Где картинку мучат аж в "четыре прохода" .
- Код: Выделить всё
//image3 обычная картинка типа TImage на форме
// Конопка увеличить.
procedure TForm1.Button1Click(Sender: TObject);
Const FV:Tform=Nil;
Im:TImage=Nil;
begin
//Создаю форму и картинку
If FV=nil Then begin
FV:=Tform.Create(Self);
Fv.Top := 0;Fv.Left:=0;
Im:= TImage.Create(FV);
Im.Align:=alClient;
Im.Center := True;
Im.Stretch:=True;
Im.Proportional:=True;
FV.InsertControl(Im);
FV.Color:=LeftPanel.Color;
Fv.OnKeyDown:=@FV_FormKeyDown;// для закрытия по ESC
End;
Im.Picture.Bitmap.SetSize(1,1);
// просто Im.Picture.Clear; делает что-то не хорошее при повторном вызове .
// Гружу картинку
If Image3.Picture.Bitmap<>Nil then begin
Im.Picture.Bitmap.Assign(Image1.Picture.Bitmap);
// Стадия "0" Грубый масштаб формы под экран и картинку
FV.Width:=Min(image3.Picture.Bitmap.Width, Screen.Width);
FV.Height:=Min(image3.Picture.Bitmap.Height, Screen.Height-100);// (-100 менюшка винды +запас )
//Стадия '1' Отключаю привязку к форме и подстраиваю видимый размер картинки
Im.Align:=alNone;
im.Width:=FV.ClientRect.Width;
im.Height:=FV.ClientRect.Height;
// Стадия "2" снова подстраиваю размер окна
( "Неестественный чат" на голубом глазу советовал Im.Picture.Width и Height - не работает !)
FV.Width:=Im.DestRect.Width;
FV.Height:=Im.DestRect.Height;
// что это за DestRect понятия не имею но с ним окно на конец "скомпактифицировалось" как надо
//Стадия '3' Окончательная доводка ! Снова выключаю привязку к форме.
Im.Align:=alClient;
FV.Show;
End;
end;
Блин! Ну неужели нельзя сделать тоже самое проще