Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 05.04.2007
Сообщений: 11
1

StretchBLT Рисует черно-белое изображение

08.05.2007, 20:21. Показов 1674. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто Знает почему SrtetchBlt рисует в ПикБоксе черно-белым?
Например
Private Sub Picture1_Paint()
Dim hdc As Long, myRect As RECT ,myBitMap As Long

hdc = CreateCompatibleDC(Picture1.hdc) 'Создаем контекст
GetClientRect Picture1.hwnd, myRect ' Определяем размеры
myBitMap = CreateCompatibleBitmap(hdc, myRect.Right, myRect.Bottom) ' Создаем Bitmap
SelectObject hdc, myBitMap
'Закрашиваем контекст
Dim hBrush As Long
hBrush = GetStockObject(WHITE_BRUSH)
SelectObject(hdc, hBrush)
PatBlt(hdc, 0, 0, myRect.Right, myRect.Bottom, PATCOPY)
' Рисуем линию
Dim hPen As Long
hPen = CreatePen(1, 3, RGB(255, 0, 0))
SelectObject hdc, hPen
LineTo hdc, myRect.Right, myRect.Bottom
' Копируем в ПикБокс - Черно-Белое Изображение
StretchBlt Picture1.hdc, 0, 0, myRect.Right, myRect.Bottom, hdc, 0, 0, myRect.Right, myRect.Bottom, vbSrcCopy
DeleteObject hBrush
DeleteObject hPen
DeleteObject myBitMap
DeleteDC hdc
' рисуем в пикбоксе - Цветное изображение
Picture1.Line (0, Picture1.Height)-(Picture1.Width, 0), RGB(255, 0, 0)
End Sub

Программа на С++ (чистое API) рисует тоже черно-белое изображение
Может что-то надо указать еще - какую-нибудь палитру, или...?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2007, 20:21
Ответы с готовыми решениями:

Разработать программу, которая рисует на экране изображение светофора
Ребят набросайте что нить плз. Графику вообще не изучал( Разработать программу, которая рисует...

Разработать программу, которая рисует на экране изображение светофора
Помогите пожалуйста решить задачу Задача №7 Разработать программу, которая рисует на экране...

Цветное изображение -> черно-белое
как правильно сформировать матрицу яркости изображения и записать его в файл? что бы получить чб...

Opencv черно-белое изображение
Считываю изображение - перевожу его в черное-белое, вывожу в label, а оно странно отображается,...

4
Anri
13.05.2007, 12:59 2
Это извечная проблема программирования GDI, скажу сразу, как она решается я уже благополучно забыл за два года неиспользования С++, но вся фишка в том, что нужно настраивать Compatible Device Context. Еще повторю, к сожалению я это не так часто раньше делал, но вот помню, что плясал от функции DeviceCapabilities, типа, сначало нужно было что-то сделать с CreateCompatibleDC...

вот почитай в MSDN, начиная с этой главы:
Memory Device Contexts
The memory device context stores bitmapped images for a particular device. An application can create a memory device context by calling the CreateCompatibleDC function and supplying a handle that identifies a device context for a particular device. When the system processes this call, it creates a bitmap having a color format compatible with the original device. Because the bitmap is compatible with the given device, a memory device context is also sometimes referred to as a compatible device context.

The original bitmap in a memory device context is simply a placeholder. Its dimensions are one pixel by one pixel. Before an application can begin drawing, it must select a bitmap with the appropriate width and height into the device context by calling the SelectObject function. Once the new bitmap is selected into the memory device context, an application can begin using the device context to store images.

если посмотреть на мой диск, то это лежит в CevStudioMSDN9898VS1033GDI.chm::/devdoc/live/pdgrmm/devcons_0r1v.htm

а если через инет, то на MS-ком сайте
http://msdn.microsoft.com/library/psdk/gdi/devcons_3r77.htm
Anri
13.05.2007, 13:23 3
Сорри, я не совесем внимательно просмотрел твой код . Приношу пардон.

А в отмеску, вот, прошелся по MS и нашел такие поги:
Q111729 - BUG: StretchBlt() Does Not Perform Palette Translations
http:// support.microsoft.com / support / kb / articles / Q111 / 7 / 29.asp

http://msdn.microsoft.com/library/psdk/gdi/bitmaps_9cok.htm

http://support.microsoft.com/support/kb/articles/Q168/7/43.ASP - а вот это особо рекомендую, там с режимами StrechBlt работают, можа в этом и загвоздка была?
Anri
13.05.2007, 15:24 4
Во, вроде теперь нашел, то, что тебе надо, вот помню-же читал где-то, а где... вот полез по старым нычкам, там и вышел на адресок, он и на простом поиске на MSDN-Online нашелся влегкую:
http://msdn.microsoft.com/library/techart/msdn_interp.htm

Короче там расписана вся процедура как работать с цветами (палитрами) - Stretching 256-Color Images Using Interpolation.

А вообще-то я бы рекомендовал походить по той самой первой ссылке, потому как программирование GDI штука навороченная, лучше MFC юзать, но, само-собой, MFC из-под VB не сильно уж и поюзаешь .

to smalig: и ни фига я не спамлю. я человеку помочь пытался.
0 / 0 / 0
Регистрация: 05.04.2007
Сообщений: 11
31.05.2007, 17:46  [ТС] 5
Спасибо Anri за помощь, но все оказалось намного проще

При создании совместимого контекста в памяти создается монохромный
контекст в один пиксель. Дальнейшее поле деятельности определяет
совместимый Bitmap - CreateCompatibleBitmap. Так уже получилось,
что он у меня создавался совместимым с созданным контекстом (hdc),
а не первоначальным (Picture1.hdc). Идиотская ошибка, так что приношу
извенения за введение в заблуждение.
0
31.05.2007, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2007, 17:46
Помогаю со студенческими работами здесь

Черно-белое изображение на цветном ТВ
Вообщем дело в том, что есть телевизор плазма какая то, сам цветной , но все устройства которые...

Черно-белое изображение -> изображение в цвете
Я загружаю чб изображение : Код Delphi procedure TForm1.Button1Click(Sender: TObject); begin if...

Загрузить черно-белое изображение в массив
Здравствуйте, помогите с решением задачи: как загрузить бинарное изображение(черное и белое только)...

Преобразовать цветное изображение в черно-белое
Интересует не вычисление порога, и не алгоритм. В c# я загружаю изображение в bitmap, лочу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru