hi,
will mit gdi+ beim programmstart ein bild von ganz transparent langsam auch ganz sichtbar machen weiß einer von euch wie das geht?
bild langsam sichtbar machen
-
- [ offen ]
-
manuel6000 -
1. Januar 2012 um 21:31 -
Geschlossen -
Erledigt
-
-
Du kannst ein Bild auf einer GUI erstellen und die GUI dann langsam per
[autoit]WinSetTrans
[/autoit]
einblenden. -
aber das fenster soll ganz sichtbar bleiben nur das bild soll transparent sein
-
- Offizieller Beitrag
Benutze eine ChildGui und setze auf dieser die Transparenz.
-
Du könntest eine Child GUI in der richtigen GUI einbauen und diese dann langsam per
[autoit]WinSetTrans
[/autoit]
[autoit]
einblenden
Childgui:$hGUI = GUICreate("", 800, 600, 224, 0)
[/autoit]
GuiSetState()
$Preview = GUICreate("", 200, 200, 224, 0, 0x40000000, -1, $hGUI)
GuiSetState() -
und wenn ich jetzt 5 bilder mit 20% haben will kann doch nicht immer ein fenster machen
-
- Offizieller Beitrag
Warum denn nicht? Das ändert doch nix an der Transparenz der Childgui. Die Childgui kann die selben Ausmaße der Hauptgui haben. Oder willst du 5 Bilder an der selben Position nacheinander einblenden?
-
ja will ich und dauert das mit fenstern nicht viel länger?
-
- Offizieller Beitrag
Du kannst auch 5 Childguis benutzen und diese nacheinander einblenden. Wie lange es dauert hängt von der Verzögerung ab, die du bei der Einblendung benutzt.
Schnelligkeit spielt da keine Rolle, sonst brächtest du das langsame Einblenden von transparent nach voll sichtbar nicht. -
hab das script mach geschrieben aber das weiß müsste doch jetzt nur halb transparent sein
[autoit]#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
#include <GDIPlus.au3>
#include <Misc.au3>$hGUI = GUICreate("", 800, 600, 224, 0)
[/autoit]
GuiSetState()
$Preview = GUICreate("hallo", 200, 200, 224, 60, 0x40000000, -1, $hGUI)
GUISetBkColor(0xFFFFFF)
WinSetTrans("hallo","",170)
GuiSetState()
Sleep(1000)
Exit -
Du benutzt eine Transparenz von 170. Aber die hälfe müsste 128 sein (256/2) und dann noch schön einblenden müsste so gehen
[autoit]
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
#include <GUIConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
$hGUI = GUICreate("", 800, 600, 224, 0)
GuiSetState()
$Preview = GUICreate("hallo", 200, 200, 224, 60, 0x40000000, -1, $hGUI)
GUISetBkColor(0xFFFFFF)
WinSetTrans($Preview,"",128) ;halb sichtbar
GuiSetState()
Sleep(1000)
For $n=128 to 256
sleep(5)
WinSetTrans($Preview,'',$n)
Next
sleep(10000)
Exit -
das funktioniert auch nicht das weiß ist sofort ganz da
und wenn ich noch gdi+ dazu mache wirds überdeckt
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("", 800, 600, 224, 0)
[/autoit] [autoit][/autoit] [autoit]
GuiSetState()
$Preview = GUICreate("hallo", 200, 200, 224, 60, 0x40000000, -1, $hGUI)
GUISetBkColor(0xFFFFFF)
WinSetTrans($Preview,"",128) ;halb sichtbar
GuiSetState()
$hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hgui)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 600, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsFillRect($hbuffer,0,0,1050,300,$hbrushgelb)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
Sleep(5000)
For $n=128 to 256
sleep(5)
WinSetTrans($Preview,'',$n)Next
[/autoit]
sleep(10000)
Exit -
Wenn du es UNBEDINGT mit GDI+ machen möchtest dann kannst du auch immer ein Rechteck auf das Bild malen. Das Rechteck muss aus einem brush bestehen der sich ändert => Man muss jedesmal einen neuen Brush erstellen und wieder löschen.
Ich war mir sicher das ich irgendwo ein Sript von UEZ hatte wo ein Bild langsam erscheint, ich schau weiter nach.
-
aber wenn ich ein rechteck drüber mache kann ich doch nicht 2 bilder mit 50% sichbarkeit übereinander legen
-
hab es nochmal mit topmost probiert gdi+ liegt trotzdem darüber und das fenster ist überhaupt nicht transparent
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>_GDIPlus_Startup()
[/autoit]
$hGUI = GUICreate("", 800, 600, 224, 0)
GuiSetState()
GUISetBkColor(0xEEEFFF)
$Preview = GUICreate("hallo", 200, 200, 224, 60, 0x40000000, $WS_EX_TOPMOST, $hGUI)
WinSetTrans($Preview,"",28) ;halb sichtbar
GUISetBkColor(0xFAAAFF)
;WinSetTrans($hgui,"",128) ;halb sichtbar
GuiSetState()
$hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hgui)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 600, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsFillRect($hbuffer,0,0,1050,300,$hbrushgelb)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 400, 400)
Sleep(2000)
For $n=128 to 256
sleep(5)
WinSetTrans($Preview,'',$n)
Next
sleep(10000)
Exit -
Ich hab da schonmal eine Antwort gegeben,
https://autoit.de/index.php?page=Thread&threadID=28882
Das gibst du in eine for usw..MFG Schnacko
-
ok danke könntest mir bitte ein besipiel machen kapiere nicht für was die ganzen parameter sind
$hGraphics, $hImage, $iSrcX, $iSrcY, $iSrcWidth = "", $iSrcHeight = "", _
$iDstX = "", $iDstY = "", $iDstWidth = "", $iDstHeight = "", $iUnit = 2, $nTrans = 1) -
Es wär eigentlich eine Beschreibung dabei ..
[autoit]
aber hier hab ich einen Code von einen meiner Projekte genommen:For $i = 0 To 5 Step 1
[/autoit]
Sleep(10)
_GDIPlus_GraphicsClear($MainGUI[3])
_GDIPlus_GraphicsDrawImageRectRectTrans($MainGUI[3], $MainGUI[5], 0, 0, 0, 0, 0, 0, 300, 600, 2, $i / 5)
_GDIPlus_GraphicsDrawImageRect($MainGUI[1], $MainGUI[2], 0, 0, @DesktopWidth, @DesktopHeight)
Next
MFG Schnacko -
also ich kenn mich immer noch nicht aus
-
Mal sehen ob ich es erklären kann:
[autoit]Func _GDIPlus_GraphicsDrawImageRectRectTrans($hGraphics, $hImage, $iSrcX, $iSrcY, $iSrcWidth = "", $iSrcHeight = "", $iDstX = "", $iDstY = "", $iDstWidth = "", $iDstHeight = "", $iUnit = 2, $nTrans = 1)
[/autoit][autoit][/autoit][autoit]$hGraphics = _GDIPlus_ImageGetGraphicsContext( ... ) ; müsstest du von GDI+ kennen
[/autoit]
$hImage = _GDIPlus_ImageLoadFromFile( ... ) ; Das Bild , ebenfalls von GDI+
$iSrcX, $iSrcY, $iSrcWidth = "", $iSrcHeight = "" ; Hat was mit dem SourceImage zu tun.. würd ich auf 0 setzten
$iDstX = "", $iDstY = "", $iDstWidth = "", $iDstHeight = "" ; Die Position und Größe deines Bildes
$iUnit ; ist eher unwichtig .. würde ich am Standard lassen
$nTrans ; Wie unsichtbar es sein soll 0-1 -