| |
|
|
|
'Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
'Icon grau färben
'Eine Methode, um Icons grau zu färben.
'(C) 2004 Frank Abbing.
Declare bild&,text$,neu&,array&,x&,y&,z&,but&,pseudobitmap&,bitmap&,wert&,x%,y%,z%
Def SelectObject(2) !"GDI32","SelectObject"
Def CreateCompatibleBitmap(3) !"GDI32","CreateCompatibleBitmap"
Def GetSysColor(1) !"USER32","GetSysColor"
SetTrueColor 1
Window 0,0-800,600
Cls GetSysColor(15)
'Originales Icon mit Profanmitteln ins Fenster laden.
text$=Par$(0)
DrawLibIcon text$,12,40,40
'Originales Icon mit Profanmitteln im Hintergrundsspeicher laden.
x&=32
y&=32
MCLS x&,y&
Startpaint -1
Cls GetSysColor(15)
DrawLibIcon text$,12,0,0
'Icon grau färben
y%=0
Whileloop 32
x%=0
Whileloop 32
z&=GetPixel(x%,y%)
If z&<>GetSysColor(15)
z%=(GetRValue(z&)+GetGValue(z&)+GetBValue(z&))/3
SetPixel x%,y%,Rgb(z%,z%,z%)
EndIf
Inc x%
EndWhile
Inc y%
EndWhile
'Pseudobitmap erstellen. BM_SETIMAGE funktioniert nur mit Bitmaps, die keinem HDC zugeordnet sind.
pseudobitmap&=CreateCompatibleBitmap(%hdc,x&,y&)
'Pseudobitmap unserem HDC zuordnen
'Als Ergebnis bekommen wir unsere losgelöste Bitmap zurück !
bitmap&=SelectObject(%hdc,pseudobitmap&)
EndPaint
'Button erstellen via Control / die Create(Button,...) Methode funktioniert nicht ohne weiteres
'Button noch nicht sichtbar !
but&=@Control("Button","",$40000080,40,100,48,48,%hwnd,1001,%Hinstance)
'Bitmap dem Button zuordnen
Sendmessage(but&,$F7,0,bitmap&)'BM_SETIMAGE
'Button sichtbar machen
ShowWindow(but&,1)
WaitKey
'- Button zerstören, damit die Bitmap wieder frei wird
'- Bitmap löschen
DestroyWindow(but&)
DeleteObject bitmap&
End
|
|
|
| |
|
|