Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem beim Drucken mit einer Bitmap als Brush (https://www.delphipraxis.net/98140-problem-beim-drucken-mit-einer-bitmap-als-brush.html)

daschaos 22. Aug 2007 07:57


Problem beim Drucken mit einer Bitmap als Brush
 
Morgen!

Weiß einer, woran es liegen könnte, dass meine Bitmap, die als Brush des Canvas benutzt wird, beim Drucken schlichtweg ignoriert wird? Gibt es da etwas, dass man beachten muss?

Schon einmal Danke im Vorraus für jeden Tipp!

LG,
Laura

DelphiKlaus 22. Aug 2007 08:44

Re: Problem beim Drucken mit einer Bitmap als Brush
 
Hallo Laura,

ist es nicht so, dass eine Bitmap, die als Brush verwendet wird, nur 8x8 Pixel gross sein darf. Und auf einem Drucker ist 8x8 so gut wie nichts, in der Regel zumindest weniger als 1 Quadratmillimeter

Klaus

daschaos 22. Aug 2007 08:47

Re: Problem beim Drucken mit einer Bitmap als Brush
 
Also die ist bei mir sogar nur 3x3 groß. Das heißt, der Drucker malt die Bitmap nur einmal und füllt den Canvas nicht ganz damit aus wie sonst? Wie kann ich das Problem denn dann beheben?

SirThornberry 22. Aug 2007 08:55

Re: Problem beim Drucken mit einer Bitmap als Brush
 
könntest du bitte etwas quelltext zeigen was genau du machst?

daschaos 22. Aug 2007 09:19

Re: Problem beim Drucken mit einer Bitmap als Brush
 
Klar:

Ich übergebe entweder Printer.Canvas oder Self.Canvas, je nach dem ob ich meine Graphik einfach auf dem Bildschirm oder auf dem Drucker ausgeben möchte. BackgroundBitmap ist global definiert und wird im Konstruktor der Form angelegt.

Delphi-Quellcode:
FBackgroundBitmap := TBitmap.Create;
FBackgroundBitmap.Canvas.Pen.Width := 2;
FBackgroundBitmap.Canvas.Pen.Color := clBlack;
FBackgroundBitmap.Transparent := True;
FBackgroundBitmap.Width := 3;
FBackgroundBitmap.Height := 3;
Delphi-Quellcode:
procedure DrawOuterRect(ACanvas: TCanvas; ARect: TRect; Layer: Integer; Background: Boolean; Offset: Integer);
var
  BorderColor: TColor;
begin
  Offset := Max(1, GetLogicalUnit(ACanvas, Offset));
  ACanvas.Pen.Width := Max(1, GetLogicalUnit(ACanvas, Border));
  BorderColor := LayerColorScheme(Layer);
  ACanvas.Brush.Color := BorderColor;

  if (Background) then
  begin
    BackgroundBitmap.Canvas.Brush.Color := BorderColor;
    BackgroundBitmap.Canvas.FillRect(Rect(0,0,FBackgroundBitmap.Width, FBackgroundBitmap.Height));
    BackgroundBitmap.Canvas.MoveTo(Round(FBackgroundBitmap.Width/2), Round(FBackgroundBitmap.Height/2));
    BackgroundBitmap.Canvas.LineTo(Round(FBackgroundBitmap.Width/2), Round(FBackgroundBitmap.Height/2));
    BackgroundBitmap.Canvas.Brush.Color := LayerColorScheme(Layer);
    ACanvas.Brush.Bitmap := BackgroundBitmap;
  end //if(Background)
  else
    ACanvas.Brush.Style := bsSolid;

  ACanvas.Pen.Color := GraphUtil.GetShadowColor(BorderColor, -100);

  ACanvas.Rectangle(ARect);
end;

daschaos 23. Aug 2007 10:22

Re: Problem beim Drucken mit einer Bitmap als Brush
 
Funktioniert jetzt, danke! Hatte was übersehen an anderer Stelle...


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