В общем все довольно просто получаеться. Даже проще, чем в статье описано. По большому счету нет смысла делать попиксельно наложение маски. Вся соль в том, что поверхность DirectDraw имееет DC, с которым можно работать стандартными апи-шными функциями. Вот я наваял такую элементарную функцийку:
- Код: Выделить всё
Public Sub MergeSurfaces(Dest as DirectDrawSurface7, Source as DirectDrawSurface7, SourStartX as Integer, SourStartY as Integer, DestWidth as Integer, DestHeight as Integer, DestStartX as Integer, DesctStartY as Integer, Method as Long)
Dim DC1 as Long
Dim DC2 as Long
DC1 = Dest.GetDC
DC2 = Source.GetDC
BitBlt DC1, DestStartX, DestStartY, DestWidth, DestHeight, DC2, SourStartX, SourStartY, Method
Dest.ReleaseDC DC1
Source.ReleaseDC DC2
End Sub
Потом вызываем эту функцию и подставляем первым парамертом исходную порхность с рисунком, вторым - поверхность со сплошной цветовой маской. Ну а дальше по тексту - координаты, ширина, высота и т.д. А последний парамерт - это самое интересное. Если подставить vbSrcCopy - произведется простое копирование (что иногда очччень полезно), если vbSrcAnd - как раз наше пресловутое сложение с маской. Проверил - работает на ура
Може, правда где то с синтаксисом наглючил, но смысл тот
То, что для одних константа, для других только переменная...