Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.042 c
6-1147537557
scolopax
2006-05-13 20:25
2007.02.18
ClientSocket1.Open;


15-1170058773
dddd
2007-01-29 11:19
2007.02.18
Как по укозателю вернуть сам объект


2-1170058633
Kotofeich
2007-01-29 11:17
2007.02.18
Скрыть кнопку


2-1170236693
Lera
2007-01-31 12:44
2007.02.18
Отключение от сети


15-1169933287
PHPdeveloper
2007-01-28 00:28
2007.02.18
бесплатный хостинг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский