Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildbearbeitungsprogramm Auswahlwerkzeug (https://www.delphipraxis.net/160562-bildbearbeitungsprogramm-auswahlwerkzeug.html)

schlagzu 19. Mai 2011 14:30

Bildbearbeitungsprogramm Auswahlwerkzeug
 
Hallo,

ich programmiere gerade ein Bildbearbeitungsprogramm und scheitere gerade am Auswahlwerkzeug.
Bei einem Viereck ist das nicht schwer und auch nicht bei einem Polygon. Aber wie mache ich das bei einen Kreis und beim Zauberstab. Wie ich die Pixel, die im Raster liegen (+- X%) kriege ich. Aber wie bekomme ich die Außenlinie?

MfG schlagzu

Satty67 19. Mai 2011 15:37

AW: Bildbearbeitungsprogramm Auswahlwerkzeug
 
Das scheint über Masken zu laufen. Also ein Schwarz/Weiß Bild, bei dem Schwarz = markiertes Areal. Zumindest lassen sich so auch bei mir bekannten Programmen Auswahlen speichern.

Derartige Masken lassen sich auch im RLE Format (z.B. PCX) nahezu ohne Geschwindigkeitsverluste komprimieren.

Eine deratige Form, sich Auswahlen zu merken bietet m.E. auch Vorteile bei einfachen Formen wie Kreise und Rechtecke. Ohne (komplexe) Berechnung prüfbar, ob Pixel im Auswahlbereich und GDI Funktionen kann man damit auch füttern.

shmia 19. Mai 2011 15:45

AW: Bildbearbeitungsprogramm Auswahlwerkzeug
 
Beim Kreis merkst du dir den Punkt in OnMouseDown.
Dazu die Parameter x und y in einem TPoint speichern.
Delphi-Quellcode:
FUrsprung := Point(x,y);
Im Event OnMouseMove bekommt du neue Koordinaten mit denen du den Radius des Kreises berechnen kannst.
Delphi-Quellcode:
FAktPunkt := Point(x,y);
radius := CalcDistance(FUrsprung, FAktPunkt);
...
// Hilfsfunktion
function CalcDistance(p1,p2:TPoint):integer;
begin
  Result := Round(Sqrt(Sqr(p1.x-p2.x)+Sqr(p1.y-p2.y)));
end;
Zauberstab ist natürlich deutlich anspruchsvoller; ich würde das nach hinten verschieben bis du die einfacheren Dinge gelöst hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.

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