Hallo,
ich hab ein kleines Problem mit dem Watermark. Ich hab die Grafik so wie im WaterM2 Demo in den Hintergrund des Editors geladen.
Allerings wird diese nicht mit ausgedruckt. wpDontPrintWatermark steht auf false. Was kann man da machen?
Hier mal der Code, mit dem ich das mache:
Code
// TImage zu watermark
procedure TForm6.PrintTiledBackground(toCanvas : TCanvas; PageRect : TRect; Mult : Double = 1);
var x,y : Integer;
bit : TBitmap;
begin
x := PageRect.Left;
bit := Image1.Picture.Bitmap;
if Abs(Mult-1)<0.01 then
toCanvas.Draw(x,y,bit);
inc(y, bit.Height);
inc(x, bit.Width);
y := PageRect.Top;
toCanvas.StretchDraw(Rect(x,y, Round(x + bit.Width * 8), Round(y + bit.Height * 8)),bit);
inc(y, Round(bit.Height*8));
inc(x, Round(bit.Width*8));
end;
//hier wird das watermark erzeugt
procedure TForm6.WPRichText1PaintWatermark(Sender: TObject;
RTFEngine: TWPRTFEnginePaint; toCanvas: TCanvas; PageRect: TRect; PaintPageNr,
RTFPageNr: Integer; WaterMarkRef: TObject; XRes, YRes: Integer;
CurrentZoom: Single; PaintMode: TWPPaintModes);
// ~~~~~~~~~~~~~~~~~~~~~ Convert CM values into pixel ~~~~~~~~~~~~~
function XP(cm: Double): Integer;
begin
Result := MulDiv(WPCentimeterToTwips(cm), Xres, 1440);
end;
function YP(cm: Double): Integer;
begin
Result := MulDiv(WPCentimeterToTwips(cm), Yres, 1440);
end;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin
PrintTiledBackground(toCanvas,PageRect, XRes / Screen.PixelsPerInch);
end;
//hier drucken
procedure TForm6.Button1Click(Sender: TObject);
begin
Printer.Title := 'Label';
Printer.BeginDoc;
WPSuperPrint1.Paint(
Printer.Canvas,
-GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX), // Offset in pixels
-GetDeviceCaps(Printer.Handle, PHYSICALOFFSETy), // Offset in pixels
GetDeviceCaps(Printer.Handle, LOGPIXELSY) / 1440, // Multiplicator for Parameters
[]); // Options
Printer.EndDoc;
end;
Alles anzeigen