GDIPlus Grafik speichern funktioniert nicht korrekt

  • Hallo zusammen,

    eigentlich sagt der Titel schon alles. Ich erhalte nur eine schwarze jpg-Datei. Auch wenn ich vorher auf die Grafik noch etwas draufmale, die abgespeicherte Datei ist nur schwarz. Meine anderen Versuche muß ich hier ja gar nicht erst vorstellen....

    Für die Lösung des Problems benötigt man anscheinend umfassendere GDIplus Kenntnisse.

    Beste Grüße, Jens

  • Du musst ImageGetContext verwenden und das zurückgegebene Bild davon beschreiben (als Buffer), dann kannst du deine $hSaveBitmap auch speichern.

    Sieh dir mal das Beispiel zu _GDIPlus_BitmapCreateFromGraphics aus der Hilfe an: https://www.autoitscript.com/autoit3/docs/l…romGraphics.htm

  • Vielen Dank, Alpines.

    Auch wenn ich mir noch nicht erklären kann, wieso auf ich auf $hIamage zeichnen kann und das Gezeichnete in der vorher deklarierten Variablen $hSaveImage auch vorhanden ist. AAH, es handelt sich um handles, aber wofür brauch ich dann noch den Context?

    Naja, auch wenn ich es leider nicht verstehe, ich kann jetzt erstellte Grafiken speichern und das war das Wichtigste.

  • Mit ImageGetGraphicsContext erzeugst du einen Buffer zu deinem BitmapObjekt welches auf ein GraphicsObjekt zeigt.

    GdiPlus flusht dann den Buffer automatisch auf die Bitmap und du musst es nur noch auf die Graphics mit _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap) zeichnen.

    Wenn man ImageSaveToFile mal an die Beispielfunktion von _GDIPlus_BitmapCreateFromGraphics hinzufügt, dann funktioniert das ganze auch:

  • Dann noch einmal herzlichen Dank! So einfach wär das also gewesen. Vielleicht sollte mal jemand von euch ein Beispiel irgendwo gut erreichbar/sichtbar und erklärt positionieren oder ihr integriert das in die Hilfe, und zwar mit deiner Erklärung. So toll und einfach ich Autoit finde, die Grafikprogammierung mit GDI+ ist für Laien fast nicht nachzuvollziehen.

    Ich habe mir deshalb jahrelang mit Screenshots geholfen, aber jetzt unter WIN10 mit der Möglichkeit der scalierbaren Bildschirminhalte funktionierte das auch nicht mehr zufriedenstellend.