Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизКак програмно изменить размер картинки Найти похожие ветки
← →
Vic-z (2007-01-28 16:44) [0]Доброе время суток.
Подскажите как можно подогнать размер загруженого из ресурса битмапа
к размеру Image1, что то не пойму как правильно сделать
размер Image1 меняется, а размер загруженого битмапа не хочет :(
procedure TForm1.FormActivate(Sender: TObject);
var
w,h: Integer;
TOP_IM:TBitMap;
begin
w:=StrToInt(Form_razmer.Edit_shirina.Text) div 10;
h:=StrToInt(Form_razmer.Edit_visota.Text) div 10;
TOP_IM:=TBitMap.Create;
TOP_IM.LoadFromResourceName(HInstance,"TOP_IM");
Image1.AutoSize:=true;
Image1.Stretch:=true;
Image1.Picture.Bitmap.Width:=w;
Image1.Picture.Bitmap.Height:=h;
TOP_IM.Canvas.StretchDraw(TOP_IM.Canvas.ClipRect,TOP_IM);
TOP_IM.Width:=w;
Image1.Canvas.Draw(0,0,TOP_IM);
end;
← →
antonn © (2007-01-28 17:05) [1]во первых повесить код на кнопку:) (это имхо, но в activate его вешать - глупость)
TOP_IM:=TBitMap.Create;
try
TOP_IM.LoadFromResourceName(HInstance,"TOP_IM");
TOP_IM.canvas.copyrect( rect(0,0,w,h), TOP_IM.canvas, rect(0,0,TOP_IM.width,TOP_IM.height) );
image1.assign( TOP_IM ); //вот тут не помню, возможно нужно просто сделать следующие строчки, а можеи и не надо
image1.width:=TOP_IM.width;
image1.height:=TOP_IM.height;
finally
TOP_IM.free;
end;
← →
Vic-z (2007-01-28 17:17) [2]что то не пашет :(
← →
antonn © (2007-01-28 17:23) [3]я надеюсь мой код не был просто засунут в обработчик конопки?
← →
Olivetti (2007-01-28 17:26) [4]Image1.AutoSize := false;
Image1.Stretch := true;
Image1.Picture.Bitmap.LoadFromResourceName(HInstance, "TOP_IM");
← →
Olivetti (2007-01-28 17:27) [5]Olivetti (28.01.07 17:26) [4]
Больше, типа, ничего не надо.
← →
Vic-z (2007-01-28 17:30) [6]
> Olivetti (28.01.07 17:26) [4]
>
> Больше, типа, ничего не надо.
если ставлю Image1.AutoSize := false; то размер Image1 не меняется
:::(((
задолбался ужо :( не выходит у меня, поможите плиз
← →
antonn © (2007-01-28 17:39) [7]для моего кода нужно Image1.AutoSize:=false; Image1.Stretch:=false;
ах, да, я зыбал сделать это перед копированием:)TOP_IM.width:=w;
TOP_IM.height:=h;
← →
antonn © (2007-01-28 17:40) [8]
TOP_IM:=TBitMap.Create;
try
TOP_IM.LoadFromResourceName(HInstance,"TOP_IM");
image1.width:=TOP_IM.width;
image1.height:=TOP_IM.height;
TOP_IM.width:=w;
TOP_IM.height:=h;
TOP_IM.canvas.copyrect( rect(0,0,TOP_IM.width,TOP_IM.height), TOP_IM.canvas, rect(0,0,image1.width,image1.height) );
image1.assign( TOP_IM ); //вот тут не помню, возможно нужно просто сделать следующие строчки, а можеи и не надо
image1.width:=TOP_IM.width;
image1.height:=TOP_IM.height;
finally
TOP_IM.free;
end;
:)
← →
Olivetti (2007-01-28 17:41) [9]как можно подогнать размер загруженого из ресурса битмапа
к размеру Image1
Так тебе что к чему подгонять: Image1 к битмапу, или битмап к Image1?
Ты это, определись.
← →
Vic-z (2007-01-28 17:45) [10]
> битмап к Image1
битмап к Image1
← →
Olivetti (2007-01-28 17:46) [11]если ставлю Image1.AutoSize := false; то размер Image1 не меняется
Тогда это к чему? Размер Image1 должен меняться? Опиши задачу конкретнее.
← →
Vic-z (2007-01-28 17:53) [12]
> Опиши задачу конкретнее.
на форме Image1 размером 100х100 , в ресурсе битмат размером 10х10
переменными w,h нужно менять размер Image1 (с этим нет проблемы)
но битмат из ресурса нужно нарисовать на Image1 не 10х10 а размером Image.width x Image.height
← →
Olivetti (2007-01-28 18:02) [13]begin
Image1.Width := StrToInt(Form_razmer.Edit_shirina.Text) div 10;
Image1.Height := StrToInt(Form_razmer.Edit_visota.Text) div 10;
Image1.Stretch := true;
Image1.Picture.Bitmap.LoadFromResourceName(HInstance,"TOP_IM");
end;
← →
Olivetti (2007-01-28 18:04) [14]Ты уверен, что этот код должен быть на OnActivate?
← →
Vic-z (2007-01-28 18:07) [15]
> Ты уверен, что этот код должен быть на OnActivate?
>
ну когда закрывается форма для изменения размеров Image1 , тогда становиться активной главная форма
← →
antonn © (2007-01-28 18:12) [16]сделать форму "для изменения размеров Image1" с модальным вызовом, тогда и картинку можно выводить в той же процедуре, где и вызов формы
← →
Olivetti (2007-01-28 18:23) [17]ну когда закрывается форма для изменения размеров Image1 , тогда становиться активной главная форма
Она становится активной не только когда закрывается форма для изменения размеров. Какой смысл перезагружать растр из ресурса каждый раз, когда форма становится активной? Пользователь, понимаешь ли, бывает, переключается на другие приложения, или на другие формы твоего приложения (если имеются).
Воспользуйся советом [16].
Или делай загрузку растра из ресурса только при старте приложения, а размер Image1 меняй когда надо, типа:procedure TForm1.FormCreate();
begin
Image1.Stretch := true;
Image1.Picture.Bitmap.LoadFromResourceName(HInstance,"TOP_IM");
end;
procedure TForm1.FormActivate();
begin
Image1.Width := StrToInt(Form_razmer.Edit_shirina.Text) div 10;
Image1.Height := StrToInt(Form_razmer.Edit_visota.Text) div 10;
end;
Больше ничего не надо, типа...
← →
Olivetti (2007-01-28 18:27) [18]Или... убери из [17] FormActivate(), и сделай:
procedure TForm_razmer.Edit_shirinaChange();
begin
Form1.Image1.Width := StrToInt(Form_razmer.Edit_shirina.Text) div 10;
end;
procedure TForm_razmer.Edit_shirinaChange();
begin
Form1.Image1.Height := StrToInt(Form_razmer.Edit_visota.Text) div 10;
end;
← →
_SuN_ (2007-01-28 21:19) [19]
procedure LoadAvatar(img : timage; ms : tmemorystream; bg : tcolor);
var bmp : tbitmap;
begin
bmp:=tbitmap.Create;
ms.Seek(0,0);
bmp.LoadFromStream(ms);
img.Canvas.Brush.Color:=bg;
img.Canvas.FillRect(rect(0,0,img.Width,img.Height));
if (bmp.Width>bmp.Height)
then img.Canvas.StretchDraw(rect(0,abs(img.Height-trunc((img.Width/bmp.Width)*bmp.Height)) div 2,img.Width,trunc((img.Width/bmp.Width)*bmp.Height)),bmp)
else img.Canvas.StretchDraw(rect(abs(img.Width-trunc((img.Height/bmp.Height)*bmp.Width)) div 2,0,trunc((img.Height/bmp.Height)*bmp.Width),img.Height),bmp);
bmp.Destroy;
end;
← →
Olivetti (2007-01-28 21:30) [20]_SuN_ (28.01.07 21:19) [19]
М-да...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c