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

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

Изменение размера TImage


Profi ©   (2005-04-30 00:33:00) 

В программе есть Timage, вернее на mdi-форме. Размер его меняется, в зависимости от размеров окна. Изначально Timage - невидим. Проблема в том, что если я, например, уменьшу окно, а потом нарисую что-нибудь на невидимомTImage, то рисунок рисуется по старым размерам. Пробовал и Update и Repaint и Refresh - результата ноль! Может, кто знает, как этого избежать! Заранее спасибо!


izogfif   (2005-07-18 17:34:00) [1]

Если я правильно понял, то изображение отсекается одним и тем же прямоугольником, и параметр ClipRect не изменяется при изменении размеров изображения. Попробуйте изменить параметры Timage.canvas.picture.bitmap.height и width по размеру timage.height и timage.width


Profi   (2005-04-30 15:18:00) [2]

programania ©   (30.04.05 11:29) [3]
Замес в другом! При загрузки картинки и stretch=true размеры подстроются. Но! Я рисую на пустим TImage, что приводит к искажению при stretch=true. Сделал просто, перерисовываю картинку сразу после visible:=true;


programania   (2005-04-30 11:29:00) [3]

Вот тоже рисую рамку для картины
и тут при image1.stretch=true
все что рисуется на canvas деформируется как загруженная картинка.

procedure TForm1.FormResize(Sender: TObject);
var i,h,w:integer;
begin
DoubleBuffered:=true;
image1.visible:=false;
//image1.stretch:=true;
image1.top:=0;
image1.left:=0;

image1.width:=clientWidth;
image1.height:=clientHeight;

//если загружается картинка то эти строки можно убрать
//image1.picture.bitmap.width:=clientWidth;
//image1.picture.bitmap.height:=clientHeight;

image1.picture.loadFromFile('WallPaper.bmp');

//рамка:
for i:=1 to width div 12 do begin
image1.canvas.Brush.color:=
rgb(abs(trunc(255*cos(i/32))),trunc(255*sin(i/12)),trunc(255*sin(i/48)));
image1.canvas.frameRect(rect(i,i,clientWidth-i,clientHeight-i));
end;

image1.visible:=true;
end;


Profi   (2005-04-30 07:41:00) [4]

programania ©   (30.04.05 1:34) [1]
Попробую, но я не загружаю рисунок, а именно рисую через canvas.


programania   (2005-04-30 01:34:00) [5]

>уменьшу окно, а потом нарисую что-нибудь на невидимом TImage

после уменьшения окна попробуй сначала изменить image
и потом уж рисовать, например так:

procedure TForm1.FormResize(Sender: TObject);
begin
DoubleBuffered:=true;
image1.visible:=false;
image1.stretch:=true;
image1.top:=0;
image1.left:=0;
image1.width:=clientWidth;
image1.height:=clientHeight;
image1.picture.bitmap.width:=clientWidth;
image1.picture.bitmap.height:=clientHeight;
image1.picture.loadFromFile('image.bmp');
image1.visible:=true;
end;

или все-таки напиши что делаешь на самом деле


Наверх

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