Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   FreePascal Canvas.FloodFill unter Linux (https://www.delphipraxis.net/191117-canvas-floodfill-unter-linux.html)

Benedikt Magnus 9. Dez 2016 20:45


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!

Delphi-Laie 9. Dez 2016 21:21

AW: Cavas.FloodFill unter Linux
 
Zitat:

Zitat von Benedikt Magnus (Beitrag 1355806)
Ich bin für jede Hilfe dankbar!

Korrigiere bitte mal den Fehler in Deiner Überschrift, um späteres Suchen zu erleichtern.

Benedikt Magnus 9. Dez 2016 21:54

AW: Canvas.FloodFill unter Linux
 
Danke für den Hinweis. Ich habe es korrigiert.

himitsu 9. Dez 2016 22:22

AW: Canvas.FloodFill unter Linux
 
Linux und Delphi?
Ich glaub das ging vor paar Jahrzehnten zuletzt.

Bernhard Geyer 9. Dez 2016 22:40

AW: Canvas.FloodFill unter Linux
 
Zitat:

Zitat von himitsu (Beitrag 1355813)
Linux und Delphi?
Ich glaub das ging vor paar Jahrzehnten zuletzt.

Wüsste jetzt nicht wieso FreePascal das nicht mehr Linux unterstützen sollte

himitsu 9. Dez 2016 23:38

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:

Benedikt Magnus 9. Dez 2016 23:48

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.

Benedikt Magnus 9. Dez 2016 23:50

AW: Canvas.FloodFill unter Linux
 
Wenn man unter Linux Canvas.FloodFill anwendet, auf die gleiche Weise wie unter Windows, passiert einfach gar nichts... x)

Harry Stahl 10. Dez 2016 09:04

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:
function TWidgetSet.FloodFill(DC: HDC; X, Y: Integer;
  Color: TGraphicsColor;
  FillStyle: TGraphicsFillStyle;
  Brush: HBRUSH): Boolean;
begin
  Result := false;
end;
Man muss also unter Linux was eigenes machen.

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

Benedikt Magnus 10. Dez 2016 09:33

AW: Canvas.FloodFill unter Linux
 
Zitat:

Zitat von Harry Stahl (Beitrag 1355819)
Das liegt daran, dass unter Linux dafür keine Umsetzung existiert.

Gibt es dafür einen bestimmten Grund oder hat sich dessen einfach bisher noch niemand angenommen?

Zitat:

Zitat von Harry Stahl (Beitrag 1355819)
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).

Das wäre klasse! Eilig ist es nicht, daher vielen, vielen Dank! :thumb:

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 06:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz