Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
6-1125919503
ДимДимыч
2005-09-05 15:25
2005.12.18
TIdTCPServer &amp; TIdTCPClient <OnDisconnect>


4-1129608574
vanek_kg
2005-10-18 08:09
2005.12.18
Работа с чужими приложениями.


5-1117417149
Mutex
2005-05-30 05:39
2005.12.18
Отладка своих пакетов


3-1130769931
Asail
2005-10-31 17:45
2005.12.18
Вопрос по работе с датой и временем в SQL-запросе.


2-1132482425
Officeman
2005-11-20 13:27
2005.12.18
listview.Items.Item[t].Selected:=true; как scrollbar подвинуть ?




   Наверх