Заблокирован
|
|
1 | |
Как скопировать HBITMAP в HDC ?16.01.2014, 18:37. Показов 6552. Ответов 15
Метки нет Все метки)
(
Привет!
Есть HDC от окна определённого размера. Есть HBITMAP от картинки намного меньшего размера. Как один к одному скопировать битмап в контекст в определённое место вне WM_PAIN и всяких процедур оконных? BitBlt почему то не работает...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
16.01.2014, 18:37 | |
Ответы с готовыми решениями:
15
Скопировать Bitmap в другой HDC Рисование битмапов: (HBITMAP)SelectObject(hMemDC, hBitmap) выдаёт ошибку BitBlt. Скопировать изображение сначала из SecondMemhdc в Memhdc, а затем из него в hdc Как получить Bitmap из HBITMAP |
Заблокирован
|
||||||
16.01.2014, 20:44 | 2 | |||||
Привет!
Поэтому нужно ещё так или иначе преобразовать битмап в контекст. вот пример
самому неохота - приболел
0
|
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
16.01.2014, 20:47 | 3 |
А смысл вне паинта что то выводить? Сотрётся же, лучше в том месте, где хотел выводить, сними действительность с региона, или со всего окна, а в WM_PAINT уже выводи.
0
|
Заблокирован
|
|
16.01.2014, 22:25 | 4 |
UpdateLayeredWindow
Тоесть я подгружаю кучу битмапов с хардиска и получаю соответственно на них HBITMAP хэндлы. Далее делаю CreateCompatibleDC(NULL) для каждого битмапа, выбираю в него SelectObjectom этот битммап и хочу всё это барахло скопировать в общий HDC - из которого и будет инфа на Layered Windows копироваться... Добавлено через 52 минуты Всё GDI в топку, глянул на GDI+ - вещь! (я б конечно использовал DirectX, но я данный момент на него запрет ![]() Пока ещё не добрался до сути моего топика, но думаю тут всё делается просто. Может кто ткнёт носом, как скопировать несколько картинок в одну? Ну так сказать смиксовать? Graphics graphics(hdc); -создал объект Graphics, могу туда закинуть картинку graphics.DrawImage(&image, 60, 10);, при попытке закинуть ещё одну - она старую полностью выкидывает, а хотелось бы, чтоб хотя бы без всяких эффектов, новая картинка ложилась на старую... (в простом WinAPI GDI Это делается етодом получения битов таргета и битмапа - но это такой гемор)
0
|
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
17.01.2014, 07:41 | 5 |
NULL в параметре, то есть вывод не в окно, а прямо на экран?
0
|
Заблокирован
|
||||||
17.01.2014, 11:15 [ТС] | 6 | |||||
ааа всё, забил я на GDI, буду юзать GDI+
Добавлено через 11 минут у меня тут другой вопрос возник, можно ли как то при создании DC и последующем создании DIB SECTION сразу залить его каким - то определённым цветом, а не чёрным, как изначально (ну там нули все)
можно конечно перебрать все байты и установить нужный цвет, но хотелось бы без этого обойтись ...
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
17.01.2014, 13:27 | 7 |
Так вы помоему заливаете через Memset, где цвет заливки у вас 0. Измените его на другой, и возможно это сработает.
0
|
Модератор
![]() 8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
|
|
17.01.2014, 13:37 | 8 |
разумеется забил, раз разобраться в сущности не можешь
HBITMAP и HDC это разные сущности, ты бы еще HWND суда приплел (а есть еще HICON HFONT имя им легион) ты должен создать свой(новый контекст рисования) приатачить туда картинку и только потом копировать этот контекст в HDC, в любом учебнике написано через сколько на него забьешь?
0
|
Заблокирован
|
|
17.01.2014, 14:24 [ТС] | 9 |
нее - не забью, там очень много интересный плюшек, мне он понравился. Например загрузка jpg, png, эффекты всякие и тд (что то вроде Direct2D, но начиная с WinXP).
приатачить картинку или создать в на его основание DIB section, как в верхнем посте у меня.. Вроде понял. ну memset-ом можно все байты одинаково заливать, тоесть по сути получится залить ТОЛЬКО красным, синим или зелёным. Там же байты идут в формате BGRA, тоесть Blue,Green,RedmAlpha, и тд (тоесть 4-ками как бы). Ладно, побайтово буду заливать в цикле ![]() ValeryS, а не подскажете, как правильно удалять объекты GDI+ ? Простым delete? P.S.: на простой GDI я конечно не забью, я их буду миксовать - тоесть GDI/GDI+, думаю это оптимальный вариант
0
|
Модератор
![]() 8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
|
|||||||||||
17.01.2014, 14:38 | 10 | ||||||||||
насчет приатачить я что то погнал
нужно присоединить
мемсет заливает все байты а COLORREF это структура unsigned char R; unsigned char G; unsigned char B; unsigned char reserwed; для того чтобы залить все красным ты должен дать в первый байт 255 в остальные 0 Добавлено через 8 минут вот примерный текст
вот ссылка http://o3gl.com/anichkov/win_bitmap.html за плюшки надо платить быстродействием, объемом памяти, отдельной DLLкой посмотри этот сайт http://www.firststeps.ru/ много интересного
1
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
17.01.2014, 15:37 | 11 |
0
|
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
17.01.2014, 15:39 | 12 |
Не должна.
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
18.01.2014, 04:23 | 14 |
DirectDraw - DDSURFACEDESC2 | DDSD_LPSURFACE. Рисуются только оттенки белого-чёрного
А можно поинтересоваться почему "кто то с выше" сказал не пользоваться DirectX? Ведь GDI по сравнению с ним медленне намного...(по крайней мере так утверждает Фленов)
0
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
18.01.2014, 14:53 | 16 |
Я почему то подумал что вы имели ввиду какого то профессионала, который аргументировал это. Ну или как иногда бывает - приснится во сне...(не давно было такое, это как озарение свыше)
0
|
18.01.2014, 14:53 | |
Помогаю со студенческими работами здесь
16
Как узнать HDC минимизированного окна?
Как сделать Picture1.hDC динамичным?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |