bild langsam sichtbar machen

  • hi,
    will mit gdi+ beim programmstart ein bild von ganz transparent langsam auch ganz sichtbar machen weiß einer von euch wie das geht?

  • Du kannst ein Bild auf einer GUI erstellen und die GUI dann langsam per

    [autoit]

    WinSetTrans

    [/autoit]


    einblenden.

    • 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]


    einblenden
    Childgui:

    [autoit]

    $hGUI = GUICreate("", 800, 600, 224, 0)
    GuiSetState()
    $Preview = GUICreate("", 200, 200, 224, 0, 0x40000000, -1, $hGUI)
    GuiSetState()

    [/autoit]
  • 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?

    • 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>
    #include <GDIPlus.au3>
    #include <Misc.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $hGUI = GUICreate("", 800, 600, 224, 0)
    GuiSetState()
    $Preview = GUICreate("hallo", 200, 200, 224, 60, 0x40000000, -1, $hGUI)
    GUISetBkColor(0xFFFFFF)
    WinSetTrans("hallo","",170)
    GuiSetState()
    Sleep(1000)
    Exit

    [/autoit]
  • 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]


    #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

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • 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>
    #include <GDIPlus.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $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()
    $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)

    [/autoit] [autoit][/autoit] [autoit]

    Next
    sleep(10000)
    Exit

    [/autoit]

    Einmal editiert, zuletzt von manuel6000 (2. Januar 2012 um 18:50)

  • 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.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • 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>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $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

    [/autoit]
  • 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 ..
    aber hier hab ich einen Code von einen meiner Projekte genommen:

    [autoit]

    For $i = 0 To 5 Step 1
    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

    [/autoit]


    MFG Schnacko

  • 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
    $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

    [/autoit]