Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Вниз

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


igorr   (2002-03-03 05:25) [0]

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



Mbo   (2002-03-03 07:34) [1]

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

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



igorr   (2002-03-03 10:45) [2]

Я работаю с формами 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;


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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.02 c
14-57521          azik                  2002-02-01 15:18  2002.03.18  
Как написать программу как сервис ? На сколько я знаю Delphi с сервисами не дружит.


4-57550           Death                 2002-01-18 21:03  2002.03.18  
Дебаг...


1-57398           Alex                  2002-03-01 20:21  2002.03.18  
Dll


1-57440           GovoRun               2002-03-03 17:04  2002.03.18  
печать на сетевой принтер


1-57346           Alexklink             2002-03-04 11:39  2002.03.18  
Проверка орфографии