Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пропорциональность при загрузке изображения, когда Stretch=True. [D5, Win95/98]


igorr ©   (2002-03-03 05:25:00) 

Как сделать, чтобы при
Image1.Height=100 и
Image1.Stretch=True
и загрузке
Image1.Picture.LoadFromFile(FileName)
свойство Image1.Width устанавливалось пропорционально с Height?


igorr   (2002-03-03 10:45:00) [1]

Я работаю с формами MDIChild

В главной форме следующий код:


procedure TMainForm.Stretch1Click(Sender: TObject);
var
NameF:string;
begin
OpenDialog1.Filter:="Pictures *.bmp|*.bmp";
if OpenDialog1.Execute then
begin
TChildStretch.Create(Application);
NameF:=OpenDialog1.FileName;
with ActiveMDIChild as TChildStretch do
begin
Caption:=NameF;
LoadData(NameF);
end;
end;
end;


На LoadData работает код в Child форме


procedure TChildStretch.LoadData(var Name1:string);
begin
with Image2 do
begin
Stretch:=False; {по предложению Mbo 03.03.02 07:34}
Picture.LoadFromFile(Name1);
InitWidth:=Picture.Width div 2;
InitHeight:=Picture.Height div 2;
Stretch:=True;

{!!! но следующий код не проходит !!!}

Picture.Width:=InitWidth; {Cannot assign to a read-only property}
Picture.Height:=InitHeight; {Cannot assign to a read-only property}
end;



Пришлось сделать пункт в меню ГЛАВНОЙ формы, который устанавливает требуемые значения (InitWidth, InitHeight). Это выглядит так:

Код ГЛАВНОЙ формы:

procedure TMainForm.Normalsize1Click(Sender: TObject);
var
NewWidth,NewHeight:integer;
Resize:boolean;
AcCh:TChildStretch;
begin
AcCh:=ActiveMDIChild as TChildStretch;
NewWidth:=InitWidth; {либо другая нужная ширина}
NewHeight:=InitHeight; {либо другая нужная высота}
Resize:=True;
AcCh.FormCanResize(AcCh,NewWidth,NewHeight,Resize);
end;


Код Child формы:

procedure TChildStretch.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
with sender do
begin
Width:=NewWidth;
Height:=NewHeight;
end;
end;


Есть ли другие решения?


Mbo   (2002-03-03 07:34:00) [2]

Не уверен, что понял твою мысль
это?

with image1 do begin
Stretch:=false;
Picture.LoadFromFile("d:\1.bmp");
width:=Picture.Width*100 div picture.height;
Stretch:=true;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо