AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Wie kann man mit Graphics32 eine Dickere Linie zeichenen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man mit Graphics32 eine Dickere Linie zeichenen?

Ein Thema von TOC · begonnen am 22. Mär 2007 · letzter Beitrag vom 23. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#1

Wie kann man mit Graphics32 eine Dickere Linie zeichenen?

  Alt 22. Mär 2007, 10:06
Hi!

Ich hab mir vor ein paar Tagen die Graphics32 runtergeladen und installiert und bin total begeistert ! 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 !

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!
Angehängte Dateien
Dateityp: zip rotatesurface_200.zip (306,2 KB, 48x aufgerufen)
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 11:45
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
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#3

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 11:59
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 !

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 12:33
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, 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
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#5

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 12:54
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 !

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 14:54
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.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#7

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 15:50
Hi!

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!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Benutzerbild von luwo
luwo

Registriert seit: 7. Jan 2004
Ort: Bamberg
46 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 17:49
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 )



Vielleicht gehts ja so...
...Grüße Luwo
50726F626C656D3F204F53492D53636869636874203821
  Mit Zitat antworten Zitat
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 19:14
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

Grüße
Martin
  Mit Zitat antworten Zitat
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#10

Re: Wie kann man mit Graphics32 eine Dickere Linie zeichenen

  Alt 22. Mär 2007, 19:53
Hi!

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

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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