Einzelnen Beitrag anzeigen

daschaos

Registriert seit: 23. Mai 2007
117 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Problem beim Drucken mit einer Bitmap als Brush

  Alt 22. Aug 2007, 09:19
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;
  Mit Zitat antworten Zitat