Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   FMX vs. VCL canvas.DrawPolygon (https://www.delphipraxis.net/205235-fmx-vs-vcl-canvas-drawpolygon.html)

bernhard_LA 16. Aug 2020 08:38

FMX vs. VCL canvas.DrawPolygon
 
unter VCL haben wir mit dem code unten Polygone in Bitmaps gezeichnet


Delphi-Quellcode:
type TPolygon = array of TPoint;
var  MyPolygon : TPolygon ;



{$IFDEF Framework_VCL}

  bmp.Canvas.polygon(MyPolygon);

{$ENDIF}
{$IFDEF Framework_FMX}

  bmp.Canvas.Drawpolygon(MyPolygom,50);

{$ENDIF}

um unter FMX selbige Aufgabe zu erfüllen benötige ich nun aber einen Polygon mit TPointF werten ( TPolygon = array of TPointF; ).

a) warum werden jetzt nicht mehr Integer Werte verwendet, die Pixel sind ja weiterhin integer ....; Gibt es jetzt dafür eine Funktion die Floating Point Werte auf die Pixel Werte meiner Bitmap zu skalieren ???
b) Was ist die schnelles Methode mein TPolygon (Integer) in die neue TPolygon Version zu konvertieren?

TurboMagic 16. Aug 2020 08:57

AW: FMX vs. VCL canvas.DrawPolygon
 
Hallo,

in FMX sind alle Positionsangaben jetzt Single Werte.
Ja, Pixel sind weiterhin ganz, aber wenn für berechnungen Single
datentypen benutzt werden gibt's bei Transformationen (z. B. mit Sin/Cos)
weniger (akkumulierte) Rundungsfehler!

Grüße

TurboMagic

Rollo62 16. Aug 2020 10:11

AW: FMX vs. VCL canvas.DrawPolygon
 
Auch weil FMX beliebig skaliert und rotiert werden kann.
Dafür gibt es sogar direkte Properties in jeder komponente .

himitsu 16. Aug 2020 11:29

AW: FMX vs. VCL canvas.DrawPolygon
 
Zitat:

Zitat von Rollo62 (Beitrag 1471891)
Auch weil FMX beliebig skaliert und rotiert werden kann.
Dafür gibt es sogar direkte Properties in jeder komponente .

Jo, an JEDER.

Die Form, paar Panels und dann darauf nochaml die Komponente selbst und jeder Unhabhängig, was sich dann akkumuliert.
Und selbst wenn nirgendwo was gemacht wurde und eine Einheit auch ein Pixel ist, dann gibt es auch da schon massig Positionierungsfehler, dass man selbst nochmal bissl schieben muß.
z.B. weil eine Linie nicht genau auf einem Pixel liegt und dann statt einem schwarzen pixelbreiten Strich zwei unterschiedlich Graue da sind
oder das Selbe bei Kleiner und so hässlich unscharf aussehender Schrift. :wall:
Das Blöde ist dann nur, dass man es nur bei sich "scharf" bekommt, aber es bei allen Anderen bestimmt wieder Scheiße aussieht.

Uwe Raabe 16. Aug 2020 11:33

AW: FMX vs. VCL canvas.DrawPolygon
 
Und wie wär's damit?
Delphi-Quellcode:
{$IFDEF Framework_VCL}

type TPolygon = array of TPoint;

{$ENDIF}

var MyPolygon : TPolygon ;



{$IFDEF Framework_VCL}

  bmp.Canvas.polygon(MyPolygon);

{$ENDIF}
{$IFDEF Framework_FMX}

  bmp.Canvas.Drawpolygon(MyPolygom,50);

{$ENDIF}

bernhard_LA 16. Aug 2020 14:08

AW: FMX vs. VCL canvas.DrawPolygon
 
in der unit
Delphi-Quellcode:
System.Math.Vectors
wird der type Tpolygon ja neu / re- definiert
ich kann in unserer Anwendung den Type Namen TPolygon nicht neu definieren, weil zu oft verwendet + zum Zeichnen im VCL benötige

wie sieht denn eine effektive Umsetzung von
meinem TPolygon in das "andere" TPolygon aus ---- und nur lokal in einer Routine wird dann das andere TPolygon , bzw. beide verwendet?

himitsu 16. Aug 2020 14:35

AW: FMX vs. VCL canvas.DrawPolygon
 
Mit Namespace?
Delphi-Quellcode:
System.Math.Vectors.TPolygon
statt
Delphi-Quellcode:
TPolygon
:stupid:

oder über Aliases.
Delphi-Quellcode:
type TFmxPolygon = System.Math.Vectors.TPolygon;


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