Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Gr32 dicken Kreis zeichnen (Donut) (https://www.delphipraxis.net/190954-gr32-dicken-kreis-zeichnen-donut.html)

Gruber_Hans_12345 23. Nov 2016 09:10

Gr32 dicken Kreis zeichnen (Donut)
 
Bin gerade dabei mit dem Gr32 zu spielen, und dabei wollte ich einen Donut zeichnen.

einen einfachen Kreis habe ich schon, indem ich mir mit Circle die Punkte berechne lasse und dann kann ich den gefüllt oder als Linie zeichnen.

Was wäre nun der klügste schritt daraus einen Donut zu machen?
Mein erster Gedanke war einen größeren Kreis und die zwei abziehen, aber da finde ich keine Funktionen dafür.

TiGü 23. Nov 2016 11:24

AW: Gr32 dicken Kreis zeichnen (Donut)
 
Einen großen Kreis zeichnen und einen kleinen mit der Hintergrundfarbe in die Mitte?

Gruber_Hans_12345 23. Nov 2016 12:06

AW: Gr32 dicken Kreis zeichnen (Donut)
 
das ganze sollte dann auf einen "unbekannten" hintergrund gezeichnet werden, also da ist dann entweder schon ein PNG Bild dahinter oder irgendwas anderes, was ich dann nicht verlieren möchte.

Ich versuche es im Moment mit der TPolygon32
indem ich ein Outline und ein GRow mache, aber das funkt leider auch nicht so wie es sollte ...

Jens01 23. Nov 2016 12:52

AW: Gr32 dicken Kreis zeichnen (Donut)
 
Da gibt es mehrere Möglichkeiten:

1) In GR32_VectorUtils gibt es die Methode Circle. Ich glaube Du mußt dann die Stiftstärke bei Pen auf die entsprechende einstellen.

2) Man kann es mit den Polygonen machen, indem man so ein Donut erzeugt. Das müßte ich selber gerade genau gucken. Habe es aber irgendwann schon mal gemacht.

3) Du nimmst die veraltete Unit von Angus :
http://angusj.com/delphi/gr32_lines.php

Es könnte sein, dass sie nicht ganz bei neueren Versionen von Gr32 funktioniert. Dafür gibt es aber schon Fixes. Frag dann mal nach.

bytecook 23. Nov 2016 22:21

AW: Gr32 dicken Kreis zeichnen (Donut)
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1354447)
Bin gerade dabei mit dem Gr32 zu spielen, und dabei wollte ich einen Donut zeichnen.

einen einfachen Kreis habe ich schon, indem ich mir mit Circle die Punkte berechne lasse und dann kann ich den gefüllt oder als Linie zeichnen.

Was wäre nun der klügste schritt daraus einen Donut zu machen?
Mein erster Gedanke war einen größeren Kreis und die zwei abziehen, aber da finde ich keine Funktionen dafür.

Schau mal hier, da findest die aktuellste Version: https://github.com/graphics32/graphics32

"Donut-Ergebnis" mit GR32 http://i68.tinypic.com/f3xgt1.png

Ein Donut ist mittlerweile ziemlich simpel, zwei Ellipsen in einen TFlattenedPath rein. Dazu unbedingt GR32_Paths ansehen. Leider gibts derzeit keine Doku dazu, aber die
Demos im Master helfen schon ziemlich weiter. Wichtig ist, dass du beim Polyfillmode des Renderers "pfEvenOdd" angibst, damit der "kleinere" Teil freigestellt/transparent wird.

Eine schöne Erklärung zu den Filltypen (hat nichts mit Farbe, sondern mit Freistellung zu tun) findest du auf der ziemlich aktuellen Seite von Angus ...
http://www.angusj.com/delphi/clipper...lyFillType.htm

Und es gibt auch neueres von ihm für GR32 ...
Siehe http://graphics32.org/news/newsgroup...ticle_id=13199



Hth,

Peter

Gruber_Hans_12345 24. Nov 2016 08:17

AW: Gr32 dicken Kreis zeichnen (Donut)
 
oh danke :D

Habe es mittlerweile auch schon zusammengebracht.

Delphi-Quellcode:
var
    pPoints    : TArrayOfArrayOfFloatPoint;
begin
        setlength(pPoints, 2);
        pPoints[0] := Circle(mPoint.X, mPoint.Y, radius);
        pPoints[1] := Grow(pPoints[0], width);
        GR32_Polygons.PolyPolygonFS(Bitmap, pPoints, Color);
    end;
falls es noch wer braucht.

Jens01 24. Nov 2016 12:15

AW: Gr32 dicken Kreis zeichnen (Donut)
 
Zitat:

Und es gibt auch neueres von ihm für GR32 ...
Siehe http://graphics32.org/news/newsgroup...ticle_id=13199
Interessanter Link. Danke.

@Gruber_Hans_12345
Man kann solche Sachen in GR32 oft auf mehreren Wegen lösen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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