Einzelnen Beitrag anzeigen

striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#1

ExtCreatePen und ps_USERSTYLE

  Alt 24. Jan 2018, 20:52
Hallo zusammen,

ich möchte eine Line zeichnen, bei der sich Quadrate und gleich große Leerräume abwechseln. Leider klappt das nicht - was herauskommt sind dashes und relativ schmale Leerräume. Ich hätte ja zumindest erwartet, dass beide Abschnitte gleich groß sind.

Hat jemand eine Idee?


Delphi-Quellcode:
procedure TdlgMain.DrawLine(BM: tBitmap);

var
  aPattern: Array[0..1] of Integer;
  lBrush: LogBrush;
  LineWidth: Word;
  NewPen: hPen;
  X: Integer;
  Y: Integer;

begin
  LineWidth := 40;
  lbrush.lbStyle := BS_SOLID;
  lbrush.lbColor := clRed;
  lbrush.lbHatch := 0;

  if NewPen <> 0 then begin
     NewPen := 0;
     DeleteObject(NewPen);
  end;

  aPattern[0] := LineWidth;
  aPattern[1] := LineWidth;

  NewPen := ExtCreatePen(PS_GEOMETRIC or PS_USERSTYLE or
                         PS_ENDCAP_SQUARE or PS_JOIN_MITER,
                         LineWidth, lBrush, Length(aPattern), @aPattern);

  BM.Canvas.Pen.Handle := NewPen;
  BM.Canvas.MoveTo(100, 0);
  BM.Canvas.LineTo(100, BM.Height - 1);

  if NewPen <> 0 then begin
     NewPen := 0;
     DeleteObject(NewPen);
  end;
end;
  Mit Zitat antworten Zitat