Code: Alles auswählen
case Buttongadget(#Button_0)
Mfg Fusselohr
Code: Alles auswählen
case Buttongadget(#Button_0)
Code: Alles auswählen
Case #Button_0
Code: Alles auswählen
Procedure DrawTransparentImage(TransImage.l, ZielImage.l, x.l, y.l, b.l, h.l, TransColor.l)
Protected hdc.l, hzwischen.l, HdcTemp.l, obj.l, HdcBack.l, HdcObject.l, HdcMem.l, HdcSave.l
Protected BmPAndBack.l, BmPAndObject.l, BmPAndMem.l, BmPSave.l, BmpBackOld.l, BmpObjectOld.l
Protected BmpMemOld.l, BmpSaveOld.l, CColor.l, target.l
ImageID(TransImage) : hdc = StartDrawing(ImageOutput(TransImage))
hzwischen = CreateCompatibleBitmap_(hdc, b, h) : HdcTemp = CreateCompatibleDC_(hdc)
obj = SelectObject_(HdcTemp, hzwischen) : HdcBack = CreateCompatibleDC_(hdc)
HdcObject = CreateCompatibleDC_(hdc) : HdcMem = CreateCompatibleDC_(hdc)
HdcSave = CreateCompatibleDC_(hdc) : BmPAndBack = CreateBitmap_(b, h, 1, 1, 0)
BmPAndObject = CreateBitmap_(b, h, 1, 1, 0) : BmPAndMem = CreateCompatibleBitmap_(hdc, b, h)
BmPSave = CreateCompatibleBitmap_(hdc, b, h) : SetMapMode_(HdcTemp, GetMapMode_(hdc))
BmpBackOld = SelectObject_(HdcBack, BmPAndBack) : BmpObjectOld = SelectObject_(HdcObject, BmPAndObject)
BmpMemOld = SelectObject_(HdcMem,BmPAndMem) : BmpSaveOld = SelectObject_(HdcSave, BmPSave)
SetStretchBltMode_(HdcTemp, #COLORONCOLOR) : StretchBlt_(HdcTemp, 0, 0, b, h, hdc, 0, 0, b, h, 13369376)
If TransColor = -1 : TransColor = GetPixel_(HdcTemp, (b - 1), 0) : EndIf
SetMapMode_(HdcTemp, GetMapMode_(hdc)) : BitBlt_(HdcSave, 0, 0, b, h, HdcTemp, 0, 0, $0CC0020)
CColor = SetBkColor_(HdcTemp, TransColor) : BitBlt_(HdcObject, 0, 0, b, h, HdcTemp, 0, 0, $0CC0020)
SetBkColor_(HdcTemp,RGB(255,255,255)) : Box(0,0,b,h,GetSysColor_(#COLOR_BTNFACE))
StopDrawing() : ImageID(ZielImage) : target = StartDrawing(ImageOutput(ZielImage))
BitBlt_(HdcBack, 0, 0, b, h, HdcObject, 0, 0, $0330008) : BitBlt_(HdcMem, 0, 0, b, h, target, x, y, $0CC0020)
BitBlt_(HdcMem, 0, 0, b, h, HdcObject, 0, 0, $08800C6) : BitBlt_(HdcTemp, 0, 0, b, h, HdcBack, 0, 0, $08800C6)
BitBlt_(HdcMem, 0, 0, b, h, HdcTemp, 0, 0, $0EE0086) : BitBlt_(HdcTemp, 0, 0, b, h, HdcMem, 0, 0, $0CC0020)
BitBlt_(target, x, y, b, h, HdcTemp, 0, 0, $0CC0020) : StopDrawing()
DeleteObject_(obj) : DeleteObject_(BmpBackOld) : DeleteObject_(BmpObjectOld) : DeleteObject_(BmpMemOld)
DeleteObject_(BmpSaveOld) : DeleteDC_(HdcMem) : DeleteDC_(HdcBack) : DeleteDC_(HdcObject)
DeleteDC_(HdcSave) : DeleteDC_(HdcTemp) : DeleteObject_(hzwischen) : DeleteObject_(BmPAndBack)
DeleteObject_(BmPAndObject) : DeleteObject_(BmPAndMem) : DeleteObject_(BmPSave)
EndProcedure
TImage.l = LoadImage(#PB_Any, #PB_Compiler_Home + "Examples\Sources\Data\PureBasicLogo.bmp", #PB_Image_DisplayFormat)
TColor.l = $84695A
DrawTransparentImage(TImage, TImage, 0, 0, 381, 68, TColor)
If OpenWindow(0, #PB_Ignore, 0, 381, 68, "") And CreateGadgetList(WindowID(0))
ImageGadget(0, 0, 0, 381, 68, ImageID(TImage))
While WaitWindowEvent() <> 16 : Wend
EndIf