Hallo,
ich möchte ein Polygon schraffieren, ohne Brush.Style zu verwenden, da dies bei einigen Druckern nicht klappt.
Im Internet fand ich folgenden Algorithhmus, der aber nicht funktioniert.
Ich verwende Delphi 2010 und bin für jeden Tipp dankbar
Code:
procedure HatchSolidDash(ACanvas: TCanvas; const APolygon: array of TPoint;
HatchColor: TColor; Frequency: integer);
var
I, J: integer;
ClipRgn: HRGN;
CanvasWidth, CanvasHeight: integer;
begin
ClipRgn := CreatePolygonRgn(APolygon[0], Length(APolygon), WINDING);
//Die Werte von APolygon sind hier alle korrekt
SelectClipRgn(ACanvas.Handle, ClipRgn);
[COLOR="Red"]//ab hier sind alle folgenden Randbereiche (ClipRect.Right, Left, Top, Bottom) = 0[/COLOR]
CanvasWidth := ACanvas.ClipRect.Right - ACanvas.ClipRect.Left;
CanvasHeight := ACanvas.ClipRect.Bottom - ACanvas.ClipRect.Top;
...
end;
Aufruf von HatchSolidDash:
Code:
HatchSolidDash(metaFileCanvas, arrRinnenSohlePix, clRed, 3);
Dabei ist
Code:
metafile := TMetafile.Create;
metafile.Transparent := True;
metaFileCanvas := TMetafileCanvas.Create(metafile, 0);
arrRinnenSohlePix: Array of TPoint;