1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. UEZ

Beiträge von UEZ

  • Bild skalieren

    • UEZ
    • 3. April 2014 um 17:18

    Probiere es mal damit (nicht getestet):

    Spoiler anzeigen
    [autoit]


    _GDIPlus_Startup()
    ;Das ganze ist ein Geburtstagskalender, der mir an dem heutigen Tag die Info und ein Bild, von
    ;dem jenigen anzeigt, der Geburtstag hat. Über ein Datumsfeld kann man gezielt zu einem bestimmten
    ;Datum springen. Hier ein Teil des Codes...
    ;GUICtrlCreatePng springt in die Funktion GUICtrlCreatePng.. übergibt Filepath und "IniFileLine7", das ist ein Leeres Jpg
    ;um vorhergehende Bilder zu löschen .
    func start()

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

    While 1
    $msg = GUIGetMsg()
    Select
    case $msg = $cal
    ;~ Hier wird das Label zurückgesetzt
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,80,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,80,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,80,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,200,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,200,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,200,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,30,320,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,320,320,98)
    GUICtrlCreatePng(0,$filepath_pic&$IniFileLine7,610,320,98)
    GUICtrlSetData ($Label, "")
    GUICtrlSetData ($Label1, "")
    GUICtrlSetData ($Label2, "")
    GUICtrlSetData ($Label3, "")
    GUICtrlSetData ($Label4, "")
    GUICtrlSetData ($Label5, "")
    GUICtrlSetData ($Label6, "")
    GUICtrlSetData ($Label7, "")
    GUICtrlSetData ($Label8, "")
    GUICtrlSetData ($Label9, "")
    connect()
    case $msg = $GUI_EVENT_CLOSE
    Exit
    case $msg = $beenden
    Exit
    ;~ Bilderpfad für vergrößerte Bilder
    case $msg = $Pict1
    $bigpic_var= $Picture1
    GUICtrlCreatePng1($Pict1,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict2
    $bigpic_var= $Picture2
    GUICtrlCreatePng1($Pict2,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict3
    $bigpic_var= $Picture3
    GUICtrlCreatePng1($Pict3,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict4
    $bigpic_var= $Picture4
    GUICtrlCreatePng1($Pict4,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict5
    $bigpic_var= $Picture5
    GUICtrlCreatePng1($Pict5,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict6
    $bigpic_var= $Picture6
    GUICtrlCreatePng1($Pict6,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict7
    $bigpic_var= $Picture7
    GUICtrlCreatePng1($Pict7,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict8
    $bigpic_var= $Picture8
    GUICtrlCreatePng1($Pict8,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $Pict9
    $bigpic_var= $Picture9
    GUICtrlCreatePng1($Pict9,$filepath_pic&$bigpic_var,30,80,$IniFileLine4)
    case $msg = $help
    $x = $x + 1
    Help()
    case $msg = $dropdown_name
    NameSelect()
    case $msg = $mzi
    SplashTextOn ("Kontakt", "M" & @LF & "Beter"&@LF& "urg.cat"&@LF&@LF&"Dieses Fenster schließt sich automatisch!", 250,100, @DesktopWidth/2-125, @DesktopHeight/2-100,5, "calibri", 10)
    sleep(3000)
    SplashOff()
    EndSelect
    WEnd
    EndFunc

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

    ;~ Bilder (klein) erstellen
    Func GUICtrlCreatePng($iCtrl, $filepath_pic, $iPNG_Left = 0, $iPNG_Top = 0, $factor=0)

    Local $hImagePNG = _GDIPlus_ImageLoadFromFile($filepath_pic)
    Global $iPNG_Width = _GDIPlus_ImageGetWidth($hImagePNG)
    Global $iPNG_Height = _GDIPlus_ImageGetHeight($hImagePNG)
    Local $iPNG_faktor= $iPNG_Width/$factor
    Local $hBmp = _GDIPlus_ImageResize($hImagePNG, $iPNG_Width/$iPNG_faktor,$iPNG_Height/$iPNG_faktor) ;GDI+ Bitmap
    Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp) ;GDI Bitmap!
    If $iCtrl Then GUICtrlSendMsg($iCtrl, 0x0172, 0, $hHBitmap)

    _WinAPI_DeleteObject($hHBitmap)
    _GDIPlus_BitmapDispose($hBmp)
    _GDIPlus_ImageDispose($hImagePNG)

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

    EndFunc ;==>GUICtrlCreatePng

    [/autoit]

    Du kannst auch _GDIPlus_ImageScale() zum Skalieren benutzen, wenn du das Bild faktorisiert ändern möchtest.


    Gruß,
    UEZ

  • Schon wieder grafische Spielereien ;)

    • UEZ
    • 1. April 2014 um 23:33

    Echt coole Effekte :thumbup:

    Ich sehe, dass du jetzt die Strukt und somit Punkt Notation bevorzugst. Ist einfacher zu überblicken - sollte ich mir auch angewöhnen. 8o


    Gruß,
    UEZ

  • Bild skalieren

    • UEZ
    • 1. April 2014 um 15:53

    Brick,

    vielleicht solltest du den vollständigen Code posten, damit wir korrigieren können. Nur Fragmente bringen nicht viel!


    Gruß,
    UEZ

  • Bild skalieren

    • UEZ
    • 31. März 2014 um 21:07

    Probiere es mal damit:

    [autoit]


    Local $hBmp = _GDIPlus_ImageResize($hImagePNG, 300,500) ;GDI+ Bitmap
    Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp) ;GDI Bitmap!
    Local $iPNG_faktor= $iPNG_Width/300
    Local $iPNG_Height_res= $iPNG_Height/$iPNG_faktor
    Local $iPNG_Width_res = $iPNG_Width/$iPNG_faktor
    Local $cPNG_PIC = GUICtrlCreatePic("", $iPNG_Left, $iPNG_Top, $iPNG_Width_res, $iPNG_Height_res)
    GUICtrlSendMsg($cPNG_PIC, 0x0172, 0, $hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)
    _GDIPlus_BitmapDispose($hBmp)
    _GDIPlus_ImageDispose($hImagePNG)

    [/autoit]

    Gruß,
    UEZ

  • Bild skalieren

    • UEZ
    • 31. März 2014 um 15:35

    Die Zeile

    [autoit]


    Local $hBmp = _GDIPlus_ImageResize(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImagePNG), 300,500)

    [/autoit]


    mach so keinen Sinn, denn du übergibst der Funktion GDIPlus_ImageResize() ein GDI Handle und kein GDI+ Handle!

    Also das Bild vorher skalieren, in ein GDI Bild umwandeln und zum Pic Control schicken.

    Gruß,
    UEZ

  • Desktop Lemmings

    • UEZ
    • 24. März 2014 um 20:39

    Einfach nur cooooooooooool :thumbup:

    Gruß,
    UEZ

  • Bilddaten als "Rohdaten" kopieren (ähnlich Öffnen->Strg+a->Strg+c)

    • UEZ
    • 11. März 2014 um 16:13

    Probiere es mal damit:

    [autoit]


    #include <Clipboard.au3>
    #include <Screencapture.au3>

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

    $hHBmp = _ScreenCapture_Capture("", 0, 0, 100, 100)
    $hClipboard_Bitmap = _WinAPI_CopyImage($hHBmp, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))

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

    _ClipBoard_Open(0)
    _ClipBoard_Empty()
    _ClipBoard_SetDataEx($hClipboard_Bitmap, $CF_BITMAP)
    _ClipBoard_Close()
    _WinAPI_DeleteObject($hClipboard_Bitmap)
    _WinAPI_DeleteObject($hHBmp)

    [/autoit]

    Gruß,
    UEZ

  • Bilddaten als "Rohdaten" kopieren (ähnlich Öffnen->Strg+a->Strg+c)

    • UEZ
    • 11. März 2014 um 15:26

    Du musst das Bild, das du per Screenshot erstellt hast, in ein Clipboard Format umwandeln.

    Die Umwandlung mit einem GDI Bild, nicht GDI+, geht über die Funktion _WinAPI_CopyImage(), das du mit _ClipBoard_SetDataEx() in den Zwischenspeicher kopieren kannst.

    Gruß,
    UEZ

  • Happy Birthday GDI+ Meister

    • UEZ
    • 2. März 2014 um 19:22

    Eukalyptus,

    [Blockierte Grafik: http://i854.photobucket.com/albums/ab101/DirtyGirlMovies/mrbean.jpg]


    Bleib' uns noch lange erhalten und beglück uns mit deinen tollen (GDI+) Skripten!

    Gruß,
    UEZ

  • GDI+ Animated Loading / Waiting Screens mit 32 Beispielen (Stand: 2014-05-06)

    • UEZ
    • 27. Februar 2014 um 23:45

    Weitere Beispiele hinzugefügt.

    Viel Spaß beim Ausprobieren. :rolleyes:

    Gruß,
    UEZ

  • Bild skalieren

    • UEZ
    • 27. Februar 2014 um 18:46

    Ab 3.3.9.0:

    _GDIPlus_ImageResize()
    _GDIPlus_ImageScale()

    Gruß,
    UEZ

  • AutoIt Windows Screenshooter v1.87 Build 2026-09-01

    • UEZ
    • 23. Februar 2014 um 17:48

    Das Meiste sollte auch in meinem Proggy vorhanden sein, soweit ich das gesehen habe.

    Kannst ja mal testen und mir Feedback geben (bin hart im Nehmen). ;)

    Danke und Gruß,
    UEZ

  • _WinAPI_BitBlt und Ausgabe in Bild-Datei

    • UEZ
    • 9. Februar 2014 um 19:24

    Probiere es mal damit:

    [autoit]


    Func CaptureWindowsContent($hWnd, $sFile = @ScriptDir & "\Test.png")
    Local $aWin = WinGetPos(HWnd($hWnd))
    Local Const $iYCaption = _WinAPI_GetSystemMetrics(4)
    Local Const $iYFixedFrame = _WinAPI_GetSystemMetrics(8)
    Local Const $iXFixedFrame = _WinAPI_GetSystemMetrics(7)
    Local $aWin2 = WinGetClientSize(HWnd($hWnd))
    Local $hDC_Capture = _WinAPI_GetDC(HWnd($hWnd))
    Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Capture)
    Local $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Capture, $aWin[2], $aWin[3])
    Local $hObjectOld = _WinAPI_SelectObject($hMemDC, $hHBitmap)
    DllCall("gdi32.dll", "int", "SetStretchBltMode", "hwnd", $hDC_Capture, "uint", 4)
    DllCall("user32.dll", "int", "PrintWindow", "hwnd", $hWnd, "handle", $hMemDC, "int", 0)
    _WinAPI_DeleteDC($hMemDC)
    _WinAPI_SelectObject($hMemDC, $hObjectOld)
    _WinAPI_ReleaseDC($hWnd, $hDC_Capture)
    Local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
    Local $hBitmap_Crop = _GDIPlus_BitmapCloneArea($hBitmap, $iXFixedFrame, $iYCaption + $iXFixedFrame, $aWin2[0], $aWin2[1])
    _GDIPlus_ImageSaveToFile($hBitmap_Crop, $sFile)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap_Crop)
    _WinAPI_DeleteObject($hHBitmap)
    EndFunc

    [/autoit]


    Gruß,
    UEZ

  • Pixeln aus 1bit BMP auslesen - vertikal (Scanlines emulieren)

    • UEZ
    • 6. Februar 2014 um 16:55

    Coole Idee Eukalyptus! 8o

    Gruß,
    UEZ :thumbup:

  • Pixeln aus 1bit BMP auslesen - vertikal (Scanlines emulieren)

    • UEZ
    • 6. Februar 2014 um 14:54

    Was ist eigentlich der Zweck, Bitmaps in dieses Format umzuwandeln?

    Gruß,
    UEZ

  • Pixeln aus 1bit BMP auslesen - vertikal (Scanlines emulieren)

    • UEZ
    • 6. Februar 2014 um 11:40

    Du sagtest was von 32x16 großen Bildern, aber jetzt ist von großen Bildern die Rede.

    Da AutoIt ab einer bestimmten Größe für solche Zwecke nicht mehr geeignet ist, müsstest du auf Alternativen zurück greifen.
    Die beste Lösung wäre Inline ASM, aber darin bin ich nicht fit genug, um eine Lösung zu basteln.

    Vielleicht können dir die ASM Cracks hierbei weiter helfen.

    Gruß,
    UEZ

  • Pixeln aus 1bit BMP auslesen - vertikal (Scanlines emulieren)

    • UEZ
    • 5. Februar 2014 um 20:16

    Probiere es mal damit:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global $hBitmap = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Monochrom 16x32.bmp")
    If _GDIPlus_ImageGetWidth($hBitmap) <> 16 Or _GDIPlus_ImageGetHeight($hBitmap) <> 32 Then Exit MsgBox(0, "Fehler", "Bild ist nicht 16x32 Pixel groß!") * _GDIPlus_Shutdown()
    $iTimer = TimerInit()
    $aResult = BitmapToBinary($hBitmap)
    ConsoleWrite(TimerDiff($iTimer) & @LF)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    _ArrayDisplay($aResult)

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

    Func BitmapToBinary($hImage)
    Local $iW = _GDIPlus_ImageGetWidth($hImage), $iH = _GDIPlus_ImageGetHeight($hImage) ;get width and height of the image
    Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsDrawImageRect($hContext, $hImage, 0, 0, $iW, $iH)

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

    Local $tBitmapData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $iW, $iH, BitOR($GDIP_ILMWRITE, $GDIP_ILMREAD), $GDIP_PXF32ARGB) ;locks a portion of a bitmap for reading and writing. More infor at http://msdn.microsoft.com/en-us/library/…8(v=vs.85).aspx
    Local $iScan0 = DllStructGetData($tBitmapData, "Scan0") ;get scan0 (pixel data) from locked bitmap
    Local $iSearchPixel = Int(0xFF000080), $iReplaceColor = 0x00000000 ;color format 0xAARRGGBB
    Local $tPixel = DllStructCreate("int[" & $iW * $iH & "];", $iScan0)
    Local $iPixel, $iRowOffset, $iX, $iY, $iVal, $iBits, $y = 0, $z = 0, $aBytes[16*4]

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

    For $iX = 0 To $iW - 1
    For $iY = 0 To $iH - 1 ;get each pixel in each line and row
    $iPixel = BitAND(DllStructGetData($tPixel, 1, 1 + $iX + ($iY * $iW)), 1) ;get pixel color
    $iBits &= $iPixel
    $iVal += $iPixel * 2 ^ (7 - $z)
    $z += 1
    If $z = 8 Then
    $aBytes[$y] = $iVal
    $y += 1
    $iVal = 0
    $iBits = ""
    $z = 0
    EndIf
    Next
    Next
    _GDIPlus_BitmapUnlockBits($hBitmap, $tBitmapData) ;unlocks a portion of a bitmap that was locked by _GDIPlus_BitmapLockBits
    Return $aBytes
    EndFunc

    [/autoit]

    Bei mit benötigt die Operation für ein 16x32 ca. 3.5 Millisekunden.

    Das Resultat landet in einem Array, so dass Viererblöcke eine Spalte abbilden (0-3, 4-7, etc.).

    Gruß,
    UEZ

  • Happy Birthday, Andy

    • UEZ
    • 4. Februar 2014 um 20:20

    [Blockierte Grafik: http://haumis-wbb-hilfe.de/wbb2/images/namen/andy.gif]


    Gruß,
    UEZ

  • Pixeln aus 1bit BMP auslesen - vertikal (Scanlines emulieren)

    • UEZ
    • 4. Februar 2014 um 14:59

    Schaue mal in der Hilfe unter _GDIPlus_BitmapLockBits() nach. Dort ist ein Beispiel, wie man an die Pixel Informationen kommt.

    Gruß,
    UEZ

  • animierte Messagebox anstatt die "normale" msgbox

    • UEZ
    • 28. Januar 2014 um 11:46

    Dann poste den SciTE Konsolen Output, denn ich sehe nicht, warum du ein Syntax Error bekommst.

    Gruß,
    UEZ

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™