BitBlt

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

BitBlt

Сообщение skord » 02.04.2005 (Сб) 14:30

Я тут не много запутался... :roll:
В PictureBox получается BitBlt'ить этими двумя способами:

BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture2.hDC, 0, 0, vbSrcAnd 'Маска
BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture1.hDC, 0, 0, vbSrcPaint 'Картинка

и

BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture2.hDC, 0, 0, vbMergePaint 'Маска
BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture1.hDC, 0, 0, vbSrcAnd 'Картинка


Так вот - с какими-то картинками нормально работает первый способ, с какими-то второй...

От чего ето зависит :roll:
Или может быть я чего-то не знаю... :roll:
:?:

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 02.04.2005 (Сб) 15:52

От порядка? :D
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 03.04.2005 (Вс) 7:32

KDima
Это ты меня спросил??? :)

Объясните кто-нить... :roll:

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 03.04.2005 (Вс) 7:57

Щас припомню ... Неа не припомнил. Я вообщем когда-то юзал так
Код: Выделить всё
BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture2.hDC, 0, 0, vbSrcAnd 'Маска
BitBlt pic.hDC, xPos, yPos, pic.ScaleWidth, pic.ScaleHeight, Picture1.hDC, 0, 0, vbSrcInver 'Картинка

И вроде бы работало со всема картинками, незнаю точно исходник старый. Только фон должен быть чёрный.
الفيجوال بيسك الرابح

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 03.04.2005 (Вс) 10:03

Код: Выделить всё
Один из следующих флажков, идентифицирующих растровую операцию для передачи блока изображения. Каждая растровая операция использует RGB-значение цвета исходного исходного пиксела, чтобы определить новый цвет пиксела.
BLACKNESS-Заполняет область-получатель черным цветом.
CAPTUREBLT-Windows 98, 2000: Include any windows layered on top of the window being used in the resulting image.
DSTINVERT-Инвертирует область-получатель.
MERGECOPY-Изображение определяется результатом выполнения операции побитового AND над копируемым изображением или шаблоном.
MERGEPAINT-Изображение определяется результатом выполнения операции побитового OR над инвертируемым копируемым и областью-получателем.
NOMIRRORBITMAP-Windows 98, 2000: Предотвращает точечный рисунок от зеркального отражения.
NOTSRCCOPY-Изображение определяется инвертируемым исходным изображением.
NOTSRCERASE-Комбинирование цвета и прямоугольников источника и получателя, использующих поразрядный оператор OR с последующим инвертированием результирующего цвета.
PATCOPY-Шаблон копируется в область получатель.
PATINVERT-Комбинирование цвета указанного шаблона с цветами прямоугольника адресата, используя поразрядный оператор XOR.
PATPAINT-Комбинирование цвета указанного образца с цветами перевернутого исходного прямоугольника, используя поразрядный оператор OR. Комбинируйте результат той операции с цветами прямоугольника адресата, используя поразрядный оператор OR.
SRCAND-Комбинирование цвета и прямоугольников источника иадресата, использующих поразрядный оператор AND.
SRCCOPY-Копирование исходного прямоугольника непосредственно в прямоугольник адресата без изменений.
SRCERASE-Комбинирование перевернутых цветов прямоугольника адресата с цветами источника , используя поразрядный оператор AND.
SRCINVERT-Комбинирование цвета и прямоугольников источника и адресата, использующих поразрядный оператор XOR.
SRCPAINT-Комбинирование цвета и прямоугольников источника и адресата, использующих поразрядный оператор OR.
WHITENESS-Заполняет область-получатель белым цветом.



Код: Выделить всё
Const BLACKNESS = &H42
' Const CAPTUREBLT = ???
Const DSTINVERT = &H550009
Const MERGECOPY = &HC000CA
Const MERGEPAINT = &HBB0226
' Const NOMIRRORBITMAP = ???
Const NOTSRCCOPY = &H330008
Const NOTSRCERASE = &H1100A6
Const PATCOPY = &HF00021
Const PATINVERT = &H5A0049
Const PATPAINT = &HFB0A09
Const SRCAND = &H8800C6
Const SRCCOPY = &HCC0020
Const SRCERASE = &H440328
Const SRCINVERT = &H660046
Const SRCPAINT = &HEE0086
Const WHITENESS = &HFF0062

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.04.2005 (Вс) 10:58

Сначала хочется спросить, чего ты хочешь достичь таким BitBlt :) И если ты этим хочешь достичь копирования по маске, то погляди сюда :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 03.04.2005 (Вс) 15:09

Inferno еще бы на русском :)

GSerg
Спасибо. Буду разбираться


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 185

    TopList