Ich suche eine Funktion mit der man ein geladenes Image(mit GDI+) transparenter machen kann!
Einfach Aufgabenstellung, jedoch fand ich im deutschen u. englischen Forum keine passende Funktion.
Vielleicht wießt Ihr was?
Image (GDI+)-Semitransparens ändern!
-
- [ offen ]
-
Faweyr -
24. April 2010 um 20:26 -
Geschlossen -
Erledigt
-
-
Ich habe dir hier mal ein kleines Beispiel zu ColorMatrix gebastelt.
Spoiler anzeigen
[autoit]#include "GDIP.au3"
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>$hWnd = GUICreate("Example by name22", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]$hImage = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Bild auswählen", @ScriptDir, "Bilder (*.jpg;*.jpeg;*.png;*.bmp;*.gif)"))
[/autoit] [autoit][/autoit] [autoit]
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)$hIA = _GDIPlus_ImageAttributesCreate()
[/autoit] [autoit][/autoit] [autoit]$tMatrix = _GDIPlus_ColorMatrixCreateTranslate(0, 0, 0, -0.5) ;Werte von -1 bis 1 (!)
[/autoit] [autoit][/autoit] [autoit]
$pMatrix = DllStructGetPtr($tMatrix)_GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pMatrix)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, 400, 200) ;Zeichnet das Originalbild
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphic, $hImage, 0, 0, $iWidth, $iHeight, 0, 200, 400, 200, $hIA) ;Zeichnet das Bild mit veränderten Attributen;Aufräumen...
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageAttributesDispose($hIA)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()Do
[/autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Du benötigst dafür allerdings die GDIP.au3 (Alles zusammen im Anhang).