AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Polygon schraffieren ohne Brush.Style

Ein Thema von enigma · begonnen am 7. Jun 2016 · letzter Beitrag vom 7. Jun 2016
Antwort Antwort
enigma

Registriert seit: 15. Jun 2008
35 Beiträge
 
#1

Polygon schraffieren ohne Brush.Style

  Alt 7. Jun 2016, 08:29
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;

Geändert von enigma ( 7. Jun 2016 um 08:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Polygon schraffieren ohne Brush.Style

  Alt 7. Jun 2016, 08:35
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
enigma

Registriert seit: 15. Jun 2008
35 Beiträge
 
#3

AW: Polygon schraffieren ohne Brush.Style

  Alt 7. Jun 2016, 09:02
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Polygon schraffieren ohne Brush.Style

  Alt 7. Jun 2016, 09:11
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;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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