Hallo Jungs und Mädels,
habe mit GuiCtrlCreatePic ein Bild in der GUI erstellt und würde da jetzt einen sogenannten "Progressbar" drüberlaufen lassen. So eine Art Scaneffekt. Sprich von links nach rechts einen durchsichtigen, grünen Balken. Das Problem ist allerdings, ich bekomme den Balken nicht durchsichtig bei ner Graphic oder nem Label das ich drüber klatsche. Nimm ich ne zweite GUI bekomm ich die nie perfekt positioniert auf das Pic, da ja das Fenster auch mal verschoben wird, etc. Vllt. habt ihr ja ne goldene Idee.
Scaneffekt Bild
-
- [ offen ]
-
blubbstar -
15. März 2011 um 14:07 -
Geschlossen -
Erledigt
-
-
Den *Grünen Scanner* mit GDI+ machen?
-
Sowas?
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIONEVENTMODE", 1)Global $GuiWidth = 700, $GuiHeight = 600, $sPath = @DesktopDir & "\GDIPlus_Image.jpg", $iLoadWidth = 0
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Scaneffekt", $GuiWidth, $GuiHeight)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetState()$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($GuiWidth, $GuiHeight, $hGraphics)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0x5000ff00)
$hImage = _GDIPlus_ImageLoadFromFile($sPath)For $iLoadWidth = 0 To $GuiWidth Step $GuiWidth / 100
[/autoit] [autoit][/autoit] [autoit]
Sleep (50)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, 0, 0, $GuiWidth, $GuiHeight)
_GDIPlus_GraphicsFillRect($hBackbuffer,0, 0, $iLoadWidth, $GuiHeight, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $GuiWidth, $GuiHeight)
NextFunc _exit()
[/autoit]
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_exit -
Vielen Dank, genau richtig!
-
Ich wahr mit GDI+ wohl nicht Falsch
Was mich persöhnlich stöhrt ist, das der *Balken* am Ende das Ganze fenster Bedeckt. Soweit ich weiss hat ein "Scanner" einen Balken mit vordefinierter Breite, oder seh ich das Falsch? -
Hatte ich vergessen zu posten:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;coded by UEZ 2011-03-16
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)_GDIPlus_Startup ()
[/autoit] [autoit][/autoit] [autoit]
$hImage = _GDIPlus_ImageLoadFromFile("..\..\Images\earth_small2.bmp")
If Not $hImage Then
_GDIPlus_Shutdown()
Exit
EndIf
$iW = _GDIPlus_ImageGetWidth($hImage)
$iH = _GDIPlus_ImageGetHeight($hImage)
$hGUI = GUICreate("GDI+ Test", $iW, $iH)
GUISetState()$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphic)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0)$b = 1 + Floor($iW / 5)
[/autoit] [autoit][/autoit] [autoit]
$x = -$b$hScannerBitmap = _GDIPlus_BitmapCreateFromGraphics($b, $iH, $hGraphic)
[/autoit] [autoit][/autoit] [autoit]
$hContext = _GDIPlus_ImageGetGraphicsContext($hScannerBitmap)
$alpha_start = 0x04
$alpha_end = 0xD0
$alpha_steps = ($alpha_end - $alpha_start) / $b
$alpha = $alpha_startFor $i = 0 To $b
[/autoit] [autoit][/autoit] [autoit]
$alpha += $alpha_steps
_GDIPlus_BrushSetSolidColor($hBrush, "0x" & Hex($alpha, 2) & "00FF00")
_GDIPlus_GraphicsFillRect($hContext, $i, 0, 1, $iH, $hBrush)
Next
GUISetOnEvent(-3, "_Exit")While Sleep(20)
[/autoit] [autoit][/autoit] [autoit]
If Mod($x + $b, 30) < 15 Then
WinSetTitle($hGUI, "", "Scanning ...")
Else
WinSetTitle($hGUI, "", "")
EndIf
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, 0, 0, $iW, $iH)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hScannerBitmap, $x, 0, $b, $iH)
$x += 1
If $x > $iW + $b Then $x = -$b
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW, $iH)
WEndFunc _Exit()
[/autoit]
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BitmapDispose ($hScannerBitmap)
_GDIPlus_BitmapDispose ($hBitmap)
_GDIPlus_GraphicsDispose($hContext)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Exit
EndFuncGruß,
UEZ -
Mehr als Geil
-
Das stmmt Sehr genial. Danke