Polygon schraffieren ohne Brush.Style
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:
Aufruf von HatchSolidDash:
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;
Code:
Dabei ist
HatchSolidDash(metaFileCanvas, arrRinnenSohlePix, clRed, 3);
Code:
metafile := TMetafile.Create;
metafile.Transparent := True; metaFileCanvas := TMetafileCanvas.Create(metafile, 0); arrRinnenSohlePix: Array of TPoint; |
AW: Polygon schraffieren ohne Brush.Style
Zeichnest du direkt aufs Druckercanvas oder wie?
Falls ja würde ich alles erst auf einem Bitmap vorzeichnen und dann aufs Druckercanvas kopieren. Weil die Schraffur besteht spätestens wenn sie mal gezeichnet ist genauso aus Pixeln wie der Rest auch. Von daher sehe ich in der Hinsicht keinen Grund warum irgendein Drucker das nicht drucken können sollte. |
AW: Polygon schraffieren ohne Brush.Style
Danke für deinen Tipp.
metaFileCanvas := TMetafileCanvas.Create(metafile, 0); wird sowohl für die Bildschirm-Ansicht als auch fürs Drucken jeweils neu erzeugt. Meinst du das mit der Bitmap für den Fall Brush.Style := bsBDiagonal ? |
AW: Polygon schraffieren ohne Brush.Style
Ich meine sowas:
Delphi-Quellcode:
var bmp: TBitmap;
metafile: TMetafile; metaFileCanvas: TMetafileCanvas; begin metafile := TMetafile.Create; metafile.Transparent := True; metaFileCanvas := TMetafileCanvas.Create(metafile, 0); bmp := TBitmap.Create; try bmp.Width = 500; // Oder wie groß auch immer bmp.Height = 500; // Polygon mit Schraffur zeichnen bmp.Canvas.Brush.Color := clRed; bmp.Canvas.Brush.Style := bsCross; bmp.Canvas.Polygon([Point(12,2), Point(50,70), Point(150,320), Point(30,90)]); metaFileCanvas.Draw(0, 0, bmp); // Bitmap mit Polygon auf Metafilecanvas übertragen. finally bmp.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 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