Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Изменение размера TImage   Найти похожие ветки 

 
Profi ©   (2005-04-30 00:33) [0]

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


 
programania ©   (2005-04-30 01:34) [1]

>уменьшу окно, а потом нарисую что-нибудь на невидимом 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;

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


 
Profi ©   (2005-04-30 07:41) [2]

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


 
programania ©   (2005-04-30 11:29) [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 15:18) [4]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
1-1132748742
Mitchy
2005-11-23 15:25
2005.12.18
Как программно установить позицию ToolBar?


4-1129707209
kolos_rus
2005-10-19 11:33
2005.12.18
Блокировка клавиатуры и мыши


14-1132121406
Суслик
2005-11-16 09:10
2005.12.18
Проблемы IDE


8-1121283501
melena
2005-07-13 23:38
2005.12.18
пульсирующий шарик


14-1132725642
Ega23
2005-11-23 09:00
2005.12.18
С днем рождения! 23 ноября