![]() |
Linie zeichnen - Pen.Width wird nicht korrekt beachtet
Hallo,
ich möchte in einer PaintBox eine Linie zeichnen. Solange ich als Breite 1 Pixel angebe, funktioniert auch alles.
Delphi-Quellcode:
Wenn die Breite 2 ist, wird die Linie trotzdem nur 1 Pixel breit gezeichnet. Bei 3 Pixel wird die Linie 2 Pixel breit gezeichnet. Bei 48 wird sie 24 breit gezeichnet.
PaintBox1.Canvas.Pen.Color := clBlack;
PaintBox1.Canvas.Pen.Width := SpinEdit1.Value; PaintBox1.Canvas.MoveTo(0, 0); PaintBox1.Canvas.LineTo(PaintBox1.Width, 1); Warum ist das so? |
AW: Linie zeichnen - Pen.Width wird nicht korrekt beachtet
Zeichne die Linie mal in die Mitte des Canvas und nicht am Rand. Evtl. zeichnet er in den negativen Bereich und das siehst du dann eben nicht -- das wird genau diese Hälfte sein.
Ebenso solltest du nicht von (0, 0) auf (Width, 1) zeichnen, sondern von (0, 0) auf (Width, 0). Die selbe Höhe sollte schon drin sein, außer du brauchst das genau so? |
AW: Linie zeichnen - Pen.Width wird nicht korrekt beachtet
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Jetzt wo ich die Linie in der Mitte der PaintBox zeichne ist mir ein neues Problem aufgefallen: Die Linie wird links und rechts abgerundet gezeichnet (siehe Screenshot). Ist das normal? Anhang 34648 Gezeichnet mit diesem Code:
Delphi-Quellcode:
Ist jetzt nicht so das Problem weil ich die Linie jetzt eh' mit TBrush und FillRect zeichne. Aber interessieren würde mich trotzdem warum die Linie abgerundet wird...
PaintBox1.Canvas.Pen.Color := clSilver;
PaintBox1.Canvas.Pen.Style := psSolid; PaintBox1.Canvas.Pen.Width := SpinEdit1.Value; PaintBox1.Canvas.MoveTo(50, 50); PaintBox1.Canvas.LineTo(150, 50); |
AW: Linie zeichnen - Pen.Width wird nicht korrekt beachtet
Jupp, ist normal so, also das mit dem Abrunden.
Bei mehr als 1 Pixel Beite und wenn die Linie nur senkrecht/wagerecht sein soll, dann kannst du aber auch mit FillRect zeichnen ... so isses schön rechtreckig. :mrgreen: Ansonsten Poly-irgendwas nehmen (PolyLine ist eine Line/Umrandung, aber irgendwas gab es auch, das dann gefüllt ist) |
AW: Linie zeichnen - Pen.Width wird nicht korrekt beachtet
Zitat:
Zitat:
Man kann über die GDI-Funktion ![]()
Delphi-Quellcode:
setzen. Siehe auch
PS_ENDCAP_FLAT
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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