![]() |
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! |
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 |
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! |
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 |
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! |
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. |
Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen
Hi!
Zitat:
Grüsse von TOC! |
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 |
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 |
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 14:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz