Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie kann man mit Graphics32 eine Dickere Linie zeichenen? (https://www.delphipraxis.net/88866-wie-kann-man-mit-graphics32-eine-dickere-linie-zeichenen.html)

TOC 22. Mär 2007 10:06


Wie kann man mit Graphics32 eine Dickere Linie zeichenen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Ich hab mir vor ein paar Tagen die Graphics32 runtergeladen und installiert und bin total begeistert :P ! Was da alles eingebaut ist ist ja der reinste Wahnsinn!

Meine Frage: Ich Zeichne in meinem Programm eine Linie mit der Funktion :

TBitmap32.LineS(X1,Y1,X2,Y2:Integer; Value:TColor32; L:Boolean=False)

und möchte die Linie nun dicker machen, also die Stiftdicke zum Beispiel auf 5 setzen.
Bei TCanvas kein Problem:

Canvas.Pen.Width:=5;

aber wie macht man sowas mit der Graphics32? Das ist da sicher alles schon längst eingebaut, aber ich finde in dieser riesen Hilfedatei und in den Beispielprogrammen leider nix zu dem Thema :cry: !

Wenn Du weist wie man bei der Graphics32 die Stiftdicke verändern kann dann gib mir bitte einen Tipp.

Grüsse von TOC!

== [Edit] ================================================== ================================

Das Programm im Anhang berechnet einen 3d-Würfel der sich im Raum dreht mit einer Tafel mit Beschriftung in der Mitte. Es ist nur ein kleines Testprogramm.

Mit den Tasten

X, Y und Z kannst Du die Grafik um die entsprechende Achse rotieren lassen.

Shift+Taste ändert die Drehrichtung

Ctrl+Taste stopt die Bewegung um diese Achse.

S hält alle Bewegungen an.

R setzt die gesamte Grafik zurück!

ESC beendet das Programm

Grüsse von TOC!

martin-sun 22. Mär 2007 11:45

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hallo,

ganz genauso (Canvas.Pen.Width:=5). Das TBitmap32-Object besitzt genauso die Canvas Eigenschaft wie die VCL-Objekte. Daher kann man in vielen Programmen TBitmap einfach durch TBitmap32 ersetzen ohne das Programm ändern zu müssen.

Gruß
Martin

TOC 22. Mär 2007 11:59

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hi!

Danke für den Tip. Aber in der Hilfe zur Graphics32 steht das man möglichst die Graphics32-Funktionen verwenden soll die viel schneller sind und transparenz unterstützen und nicht die langsamen von Canvas. Wenn ich aber die Linie mit TBitmap.LineS zeichne wird die Linie immer nur ein Pixel dick, egal was ich in Canvas.Pen.Width hineinschreibe :wall: !

Grüsse von TOC!

martin-sun 22. Mär 2007 12:33

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Also es ist richtig, dass man die Graphics32-Funktionen nutzen soll. Aber du stellst ja auch nur die Parameter per Canvas ein und nutzt dann die vorgesehene LineToS-Methode.
Ich muss aber auch gestehen, :oops: dass ich bis jetzt nicht die Dicke modifiziert habe, sondern nur die Farbe und den Style (Pen.Style). Bei den beiden Sachen hat es bei mir funktioniert. Da ich gerade auf Arbeit bin kann ich es aber auch nicht probieren. Werde das machen wenn ich heute Abend zu Hause bin.

Martin

TOC 22. Mär 2007 12:54

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hi!

Ja, es wäre Cool wenn das ginge. Zum Beispiel bräuchte ich das für das Programm ganz oben im Anhang, da würde ich den 3D-Würfel gerne dicker zeichnen lassen. Ich hab im gesamten Programm vor jedem LineS die Stiftdicke mit Canvas.Pen.Width gesetzt, aber es klappt leider nit :cry: !

Grüsse von TOC!

DGL-luke 22. Mär 2007 14:54

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
hallo,

kannst du nicht einfach das canvas weglassen? Mooment.... ja da brat mir doch einer einen Storch, ich find jetzt auf die schnelle auch keine möglichkeit, da eine breite Linie zu zeichnen.

TOC 22. Mär 2007 15:50

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hi!

Zitat:

Zitat von DGL-luke
kannst du nicht einfach das canvas weglassen? Mooment.... ja da brat mir doch einer einen Storch, ich find jetzt auf die schnelle auch keine möglichkeit, da eine breite Linie zu zeichnen.

Wenigstens hast Du versucht mir zu helfen. Dat ganze ist wahrscheinlich so *EINFACH* das die Autoren der Graphics32 gar nit auf den Gedanken kamen das in der riesen Hilfe-Datei irgendwie zu erwähnen und das sich jemand diese Frage stellen könnte... Mann muss wohl nur in irgendeinem Objekt irgendeine Eigenschaft setzen. Nur wo und welche? Leider macht auch keine der mitgelieferten Demos sowas, ausser "Polygon", aber da wird das Poligon mit "Grow" vergrössert...

Grüsse von TOC!

luwo 22. Mär 2007 17:49

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hallo Toc,

ich hatte vor geraumer Zeit in einem Projekt dasselbe Problem und bin leider nicht fündig geworden wie man
die Linien selbst dicker zeichnen kann. Ein Blick in den Quellcode offenbart, dass es tatsächlich nicht so
ohne weiteres geht, da Linien über Pixeloperationen optimiert gezeichnet werden (war zumindest damals so,
keine Ahnung ob sich in der Zwischenzeit bei GFX-32 was geändert hat.)

Unser einfacher Workaround bestand damals darin einfach mehrere Linien nebeneinander zu zeichnen.

Beispiel:
Einfache Linie von (10,10) nach (50,50), dann zusätzlich von (10,11)->(10,51) macht schonmal eine etwas dickere Linie.
Wenn die Linie RICHTIG dick sein soll, dann halt 8 zusätzliche Zeichenoperationen um den Startpixel herum.

Performancemäßig klappte das mit der GFX-32 auf alle Fälle (Die is ja schnell wie Schmidt´s Katze :-D )



Vielleicht gehts ja so...
...Grüße Luwo

martin-sun 22. Mär 2007 19:14

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hi TOC,

habe gerade noch mal nachgeschaut und man kann mit den Bitmap32.Line Methoden tatsächlich keine dickeren Linien als 1px zeichnen (habs auch gerade noch mal im Quelltext angeschaut).
Dann bleiben dir nur zwei Möglichkeiten:
(1) für die breiteren Linien auf den Canvas zurückgreifen (wobei dir natürlich die Geschwindigkeit vom Bitmap32 verloren geht) oder
(2) du machst es so wie luwo es gesagt hat und zeichnest mehrere Linien nebeneinander, wobei ich dabei nicht weiß ob das bei antialias'den linien auch so gut funktioniert.

Sorry das ich doch nicht weiterhelfen konnte :cry:

Grüße
Martin

TOC 22. Mär 2007 19:53

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
 
Hi!

Ich denke es MUSS doch irgendeine eine Möglichkeit geben! Nur wie :roll: ?

Grüsse von TOC!


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