![]() |
Canvas.FloodFill unter Linux
Hallo zusammen,
zu meinem Bedauern musste ich feststellen, dass FloodFill zum Einfärben von Flächen auf einem Canvas anscheinend nur unter Windows funktioniert... Nach einigem Suchen und jeder Menge Ausprobieren habe ich aber nichts Brauchbares als Ersatz gefunden. Kann mir daher jemand sagen, wie ich es schaffe, unter Linux ein PNG zu laden, eine Fläche gleicher Farbe einzufärben, ein zweites, teilweise transparentes, PNG drüberzuzeichnen und das Ganze anschließend wieder abzuspeichern? Ich bin für jede Hilfe dankbar! |
AW: Cavas.FloodFill unter Linux
Zitat:
|
AW: Canvas.FloodFill unter Linux
Danke für den Hinweis. Ich habe es korrigiert.
|
AW: Canvas.FloodFill unter Linux
Linux und Delphi?
Ich glaub das ging vor paar Jahrzehnten zuletzt. |
AW: Canvas.FloodFill unter Linux
Zitat:
|
AW: Canvas.FloodFill unter Linux
Ahhhhhhh, das da oben hatte ich glatt übersehn ... hatte mich schon bissl gewundert. :oops:
(nicht dass er heimlich das nächste Delphi nutzt) Ich denk mal unter Windows wird TCanvas dort auch auf Microsofts GDI+ aufsetzen und unter Linux demnach irgendwas Anderes verwenden. Aber ich bin mir fast sicher, dass diese Grafik-Lib auch FloodFill kann, sonst hätte man jetzt denken können, dass es das dort eventuell nicht gäbe. :gruebel: |
AW: Canvas.FloodFill unter Linux
Okay, habe es jetzt mit ImageMagick gelöst. Da die API leider nicht recht funktionieren wollte, erstellt mein Programm jetzt anhand der Daten ein Shellskript mit den nötigen Kommandos... :lol:
Das ist nicht unbedingt sehr performant (trotz kleiner RAM-Disk als Tempverzeichnis), aber es funktioniert. Weiß jemand, wie ich über die Kommandozeile ImageMagick anweisen kann, mehrere FloodFills auf ein Bild gleichzeitig anzuwenden? Das könnte die Sache noch vereinfachen. |
AW: Canvas.FloodFill unter Linux
Wenn man unter Linux Canvas.FloodFill anwendet, auf die gleiche Weise wie unter Windows, passiert einfach gar nichts... x)
|
AW: Canvas.FloodFill unter Linux
Das liegt daran, dass unter Linux dafür keine Umsetzung existiert.
Unter Windows wird die Windows-Funktion Floodfill aufgerufen (unter MAC gibt es eine eigene FloodFillBitmap-Implementation), unter Linux landest Du hier:
Delphi-Quellcode:
Man muss also unter Linux was eigenes machen.
function TWidgetSet.FloodFill(DC: HDC; X, Y: Integer;
Color: TGraphicsColor; FillStyle: TGraphicsFillStyle; Brush: HBRUSH): Boolean; begin Result := false; end; Ich bin gerade dabei, mein PixPower mit Lazarus auch für Linux (und MAC) umzusetzen. Die Floodfill-Lösung für Linux steht auch noch auf meiner ToDo-Liste. Werde auf jeden Fall eine eigene Lösung auf Bitmap-Ebene machen, da ich hier mit TLazIntfImage (quasi dem Standard-Lazarus-Bitmap) arbeite, da möchte ich nicht extra eine weitere externe Bibliothek einbinden. Weiß nicht wie eilig es ist, kann Dir meine Lösung dann gerne zur Verfügung stellen (werde ich wohl in den nächsten Tagen machen). |
AW: Canvas.FloodFill unter Linux
Zitat:
Zitat:
Denn ImageMagick braucht derzeit in meiner virtuellen Maschine (zwei Kerne) für fünf Bilder (1699x911) á hundert FloodFills 95 Sekunden. Geplant waren rund fünfzig Bilder jede Stunde, was dann knapp 16 Minuten wären, und der Server kann ja wohl kaum ein Viertel seiner Zeit mit der Berechnung dieser blöden Bilder verbringen... :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz