Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   TCanvas mit Kommazahlen ? (https://www.delphipraxis.net/102689-tcanvas-mit-kommazahlen.html)

mimi 2. Nov 2007 12:52


TCanvas mit Kommazahlen ?
 
Hallo,
in einem Beitrag hat mir jemand von euch versucht zu erklären, wie ich Kommerzahlen in TCanvas benutzen könnte. Also jetzt für die genauigkeit wie eine Grafik Positioniert werden kann.
Ich mache das bisher immer nur so, z.b.:
Canvas.Draw(x,y,grafik)....

Aber ich verstehe nicht, was das bringen soll, man muss doch so oder so runden, damit das TCanvas verstehen bzw. verwenden kann. Ich hoffe ihr versteht das was ich meine.

Z.b. um das SVG Format da zustellen, währe das praktisch, weil dort wird nur mit Kommerzahlen gearbeitet.

Da ich nicht mir das beim besten willen nicht vorstellen kann, wollte ich mal nachfragen wie das gehen könnte.

(Leider weiß ich nicht mehr in welchen Thread das genau war, sonst könnte ich es Zitieren.).

Weil TCanvas arbeite ja nur mit Ganzen Zahlen. und manchmal ist ein Ganze Zahl einfach viel zu groß z.b. 1 oder so.....

[edit=sakura] Titel korrigiert ;) Mfg, sakura[/edit]

MarcoWarm 2. Nov 2007 13:09

Re: TCanvas mit Kommerzahlen ?
 
wenn du auf ein TCanvas zeichnest brauchst du immer Ganzzahlkoordinaten. Weil jede Einheit einem Pixel entspricht. Wenn du eine Grafik mit Fließkommakoordinaten (nicht Kommerzahlen... ) zeichnen willst musst du dir die Koordinaten errechnen und bestenfalls runden. Oder du nutzt GDI+. Dort sind Fließkommawerte erlaubt und das GDI+ Graphic Objekt kümmert sich um die Darstellung auf dem jeweiligen Device.

mimi 2. Nov 2007 13:27

Re: TCanvas mit Kommerzahlen ?
 
Zitat:

Oder du nutzt GDI+.
Genau das möchte ich nicht, weil:
01 - Ich weiß nicht ob das unter Linux nutzbar ist
02 - Ich möchte gerne Verstehen wie das im einzelnen geht. Vor allem wenn ich runde
wird es ja doch woanders da gestellt weil ich ja nicht an x: 0.3 was da stellen kann, müsste es gerundet an
0 gezeichnet werden.

Genau das möchte ich eigentlich Verhindern.
Natürlich könnte ich Jedi SDL nehmen, was es auch unter Linux gibt, aber da kenne ich mich nicht aus und weiß auch nicht ob die mit Kommerzahlen arbeiten können.

Ich möchte Eigentlich nur das Prinzip verstehen. Ich kann mir nicht vorstellen das einfach nur gerundet wird oder ? dann könnte ich es mir gleich sparen Kommerzahlen anzugeben.

mkinzler 2. Nov 2007 13:31

Re: TCanvas mit Kommerzahlen ?
 
Da der Bildschim aus einem raster besteht, wirst du irgend einen Algorithmus brauchen welcher die berechnet, welcher Pixel dein Float-Wert entspricht.

Jakob Ullmann 2. Nov 2007 13:36

Re: TCanvas mit Kommerzahlen ?
 
Es hat doch schon jemand gesagt, dass es nicht geht! Das einzige, was du machen könntest, wäre die Koordinaten in einer Variablen zu speichern und dan nur beim Zeichnen zu runden (per round). Oder kannst du mit erklären, wie du ein halbes Pixel lila und das andere Halbe orange darstellen willst?

PS: Was sind Kommerzahlen?

Khabarakh 2. Nov 2007 13:58

Re: TCanvas mit Kommerzahlen ?
 
Zitat:

Zitat von mimi
01 - Ich weiß nicht ob das unter Linux nutzbar ist

Natürlich gibt es auch für Linux ähnliche Bibliotheken, und damit meine ich nicht gleich SDL :zwinker: . Die GDI+-Lib des .Net-Frameworks wird unter Linux zum Beispiel durch Cairo emuliert.
Zitat:

Vor allem wenn ich runde
wird es ja doch woanders da gestellt weil ich ja nicht an x: 0.3 was da stellen kann, müsste es gerundet an
0 gezeichnet werden.
Du rundest so radikal :stupid: . Wenn ich auf 0,3 zeichnen will, aber nur auf 0 oder 1 zeichnen kann, dann zeichne ich doch einfach 70% des Pixels auf 0 und 30% auf 1. Fertig ist die Grundidee hinter der Rasterung von Vektorgrafiken.

mimi 2. Nov 2007 14:31

Re: TCanvas mit Kommerzahlen ?
 
Zitat:

PS: Was sind Kommerzahlen?
1,4 währe eine Kommerzahl *G*

@Khabarakh dein Beitrag mir schonmal weiter geholfen, Vielen Dank. Das muss ich nur noch Testen....
Du meinst Wenn ich eine Grafik z.b. an Stelle: 10,12 Zeichnen möchte,
muss ich Berechnen, wieviel % jeweils links bzw. rechts gezeichnet werden müssen.
(und bei Y halt Unten oder Oben) und damit könnte ich dann ganz genau Zeichnen.....

Sehe ich das richtig ?

edit: Die Cairo Engine ist ja Intressant. Gibt es dafür schon Object Pascal header (am besten für FPC?)

Dunkel 2. Nov 2007 14:54

Re: TCanvas mit Kommerzahlen ?
 
Zitat:

Zitat von mimi
Zitat:

PS: Was sind Kommerzahlen?
1,4 währe eine Kommerzahl *G*

Nee, Kommazahl. :stupid:
Und das das wären Kommerzaale. :mrgreen:


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