Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Canvas-Pen zeichnet abgerundete Linien (https://www.delphipraxis.net/22035-canvas-pen-zeichnet-abgerundete-linien.html)

Tubos 11. Mai 2004 17:09


Canvas-Pen zeichnet abgerundete Linien
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Wenn ich mit canvas.lineto eine Linie zeichnet, wird die automatisch abgerundet.
Ich will aber eckige Kreuze in meinem Prog haben.
Ich habe keine Eigenschaft von Pen gefunden, wo man die Pinselform einstellen kann.
Wie geht das?

neolithos 11. Mai 2004 18:33

Re: Canvas-Pen zeichnet abgerundete Linien
 
Man könnte auch Vierecke malen.

SirThornberry 11. Mai 2004 18:41

Re: Canvas-Pen zeichnet abgerundete Linien
 
einfach mit fillrect die beiden Streifen übereinander malen..

Robert Marquardt 11. Mai 2004 18:56

Re: Canvas-Pen zeichnet abgerundete Linien
 
Es muss auch mit Linien gehen.
Wie die Linienenden gemalt werden ist irgendwo einstellbar.
Ich weiss bloss nicht mehr wie die Win32-Funktion dazu heisst.
Quael mal die Win32-Hilfe.

Tubos 11. Mai 2004 21:04

Re: Canvas-Pen zeichnet abgerundete Linien
 
Ich möchte wirklich keine Rechtecke zeichnen, vor allem weil ich dann z.B. auf die komfortable Einstellung der Linienbreite verzichten müsste.
Und wenn das ganze dicker und schief ist, wird sowieso mathematisch ;)

Danke für den Tip mit der API-Funktion!

Hab im winsdk nachgeschaut.
Der Befehl heißt ExtCreatePen und die Syntax ist:

HPEN ExtCreatePen(
DWORD dwPenStyle, // pen style
DWORD dwWidth, // pen width
CONST LOGBRUSH *lplb, // pointer to structure for brush attributes
DWORD dwStyleCount, // length of array containing custom style bits
CONST DWORD *lpStyle // optional array of custom style bits
);

Bei dwPenStyle ist die gesuchte Eigenschaft drinnen:
End cap Description
PS_ENDCAP_ROUND End caps are round.
PS_ENDCAP_SQUARE End caps are square.
PS_ENDCAP_FLAT End caps are flat.

Wie setze ich das in Delphi um?
lplb wird doch nicht TPen entsprechen, oder?
das wäre ja irgendwie zu einfach :mrgreen:

Niko 11. Mai 2004 21:25

Re: Canvas-Pen zeichnet abgerundete Linien
 
Delphi-Quellcode:
var
  Brush: LOGBRUSH;

//  ...

Brush.lbStyle := BS_SOLID;
Brush.lbColor := RGB(0, 0, 0);
h := SelectObject(Canvas.Handle, ExtCreatePen(PS_GEOMETRIC or PS_SOLID or PS_ENDCAP_FLAT or PS_JOIN_MITER, 1, @Brush, 0, nil));
// Linien zeichnen
DeleteObject(SelectObject(Canvas.Handle, h));

e-gon 18. Apr 2021 16:14

AW: Canvas-Pen zeichnet abgerundete Linien
 
Hallo Niko,

genau nach sowas habe ich gesucht. Danke! :thumb:

Gruß
e-gon


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