Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Нужна помошь при работе с TCanvas


Автор: Тутанхамец 14.4.2006, 11:26
Здравствуйте.

Проблема вот в чем. Надо взять изображение с image1 и нарисовтаь его уменьшенным на image2. Но картинка на форме (image2) не появляется.

Что я делаю не так?

Код

b:=Tbitmap.create;

r.left:=10;
r.top:=10;
r.right:=50;
r.bottom:=50;

b.Canvas.StretchDraw(r, image1.Picture.Bitmap);

image2.Picture.Bitmap.Assign(b);


b.free;


Автор: Alexeis 14.4.2006, 11:36
Тутанхамец, зачем просто установить надо в
Image2.Stretch := true;
потом
Image2.Picture.assign(Image1.Picture);

Автор: Тутанхамец 14.4.2006, 11:38
Мне надо рисунок потом сохранить в уменьшенном виде. А Stretch насколько я понимаю только для отображения. Или нет?

Автор: Alexeis 14.4.2006, 11:38
Чтоб сработало
b.Canvas.StretchDraw(r, image1.Picture.Bitmap);
надо его изначально грузить
image1.Picture.Bitmap.LoadFromFile('my.bmp');

Автор: Тутанхамец 14.4.2006, 11:42
Хе! Ну это-то само собой) smile

Автор: Alexeis 14.4.2006, 11:50
Вспомнил нужно вызвать Image2.Invalidate; для перерисовки

Автор: Тутанхамец 14.4.2006, 11:55
Забавно, но при таком раскладе происходит вообще странная вещь:

Код



b.Canvas.StretchDraw(r, image1.Picture.Bitmap);

image2.Picture.bitmap.Assign(b);
image2.invalidate;

{image2.Picture.Bitmap.Assign(b);

image2.Refresh;
image2.Repaint;}


//b.free;



Вторая картинка не появляется, а первая исчезает...

Автор: Snowy 14.4.2006, 11:58
Забыл установить размер битмапа:
Код

  b.width := 50;
  b.height := 50;

Автор: Тутанхамец 14.4.2006, 12:03
Да, Snovy, точно! Теперь работает! smile

Большое спасибо всем! smile


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)