Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование картинки на Image


Pavel ©   (2009-11-25 12:50:00) 

Нужно из BitMap скопировать рисунок на TImage.
Пробывал выполнить двумя способами:
1-й
BitBlt(Image1.Picture.Bitmap.Canvas.Handle,0,0,BMap5.Width,BMap5.Height,BMap5.Ca nvas.Handle,BMap5.Width,BMap5.Height,SRCCOPY);

2-й
Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,100,100),BMap5.Canvas,Rect(0,0,20 ,20));

Однако, в обоих случаях Image остается пустым. Пробывал вывести BitMap на TImage так:
Image1.Picture.Bitmap:=BMap5;
Все выводится. Но мне нужно имменно через копирование.
Не пойму почему при копирование TImage остается пустым.


PZ   (2009-11-25 20:48:00) [1]

> [7] Григорьев Антон ©   (25.11.09 17:01)
> И ещё один нюанс: ...

Ну, это надо демонстрировать каждому второму посетителю форума (форумов) ...


Григорьев Антон   (2009-11-25 17:01:00) [2]


> Пробывал вывести BitMap на TImage так:
> Image1.Picture.Bitmap:=BMap5;
> Все выводится. Но мне нужно имменно через копирование.

А вы код TPicture.SetBitmap посмотрите. Там не указатель копируется, а создаётся новый объект и вызывается Assign, т.е. выполняется полноценное копирование содержимого, которое вам и нужно.

И ещё один нюанс: http://bash.org.ru/quote/399811


Pavel   (2009-11-25 14:40:00) [3]

Спасибо! Заработало. Проблема оказалась в размере BitMap.


Pavel   (2009-11-25 14:28:00) [4]

Хотел уточнить, какой функцией в данной ситуации лучшее воспользоваться CopyRect или BitBlt?


{RASkov}   (2009-11-25 14:23:00) [5]

> [3] Pavel   (25.11.09 14:00)

Как обстоят дела с размерами битмапов перед копированием?
Что показывает:
Showmessage(IntToStr(Image1.Picture.Bitmap.Width{Height}));
?


Pavel   (2009-11-25 14:00:00) [6]

Если копировать так:
BitBlt(Image1.Picture.Bitmap.Handle,0,0,BMap5.Width,BMap5.Height,BMap5.Handle,BM ap5.Width,BMap5.Height,SRCCOPY);
Image все равно остается пустым.


clickmaker   (2009-11-25 13:54:00) [7]

> [1] brother ©   (25.11.09 13:23)

BitBlt должна работать как раз таки с Canvas.Handle


brother   (2009-11-25 13:23:00) [8]

копировать надо на битмап однако.
не

> Image1.Picture.Bitmap.Canvas.Handle

а
Image1.Picture.Bitmap.Handle


Наверх

Титульная страница Поиск, карта сайта Написать письмо