![]() |
GDI+: Image drucken
Hallo zusammen!
Ich stehe gerade mal wieder auf dem Schlauch -- vielleicht könnt ihr helfen: Ich habe mit GDI+ nun mein Image (gImage vom Typ IGPImage) fertig und möchte es nun drucken. Zu meiner GDI+ Library gibt es auch ein schönes Beispiel, wie man sowas bewerkstelligen könnte -- aber ich versteh das Demo-Beispiel nicht :oops::
Delphi-Quellcode:
var
PrinterGraphics: IGPGraphics; Pen: IGPPen; begin Printer.BeginDoc; PrinterGraphics := TGPGraphics.Create(Printer.Handle); Pen := TGPPen.Create(TGPColor.Black); PrinterGraphics.DrawRectangle(Pen, 200, 500, 200, 150); PrinterGraphics.DrawEllipse(Pen, 200, 500, 200, 150); PrinterGraphics.DrawLine(Pen, 200, 500, 400, 650); Printer.EndDoc; end; Das Printer.Handle habe ich (PrintDialog) aber die anderen Zeilen zwischen Printer.BeginDoc und Printer.EndDoc sind mir unklar: mein gImage enthält doch schon das Bild, will ja nicht nochmal das Ganze Zeichnen-Geraffel ausführen, oder muß ich das?! Das Demo sagt hierzu: [I]"In the preceding code, the three GDI+ drawing commands are in between calls to the Printer.BeginDoc and Printer.EndDoc methods. All graphics commands between BeginDoc and EndDoc are routed to a temporary metafile. After the call to EndDoc, the printer driver converts the data in the metafile into the format required by the specific printer being used."[/I] Verstehe nicht, was ich jetzt mit meinem fertigen gImage tun soll... Jemand eine Idee? Danke & Gruß Jazzman |
AW: GDI+: Image drucken
Es wird einfach nur ein Image erzeugt, was zum Drucker geschickt werden kann.
Du musst im Grunde nur zwischen dem BeginDoc und EndDoc dein aktuelles Image auf die PrinterGraphics kopieren. Hab grad nicht den GDI Krams zur Hand, um dir zu sagen wie das hier funktioniert. |
AW: GDI+: Image drucken
Zitat:
Jazzman |
AW: GDI+: Image drucken
Zitat:
Delphi-Quellcode:
Was ist da unklar?
Pen := TGPPen.Create(TGPColor.Black);
PrinterGraphics.DrawRectangle(Pen, 200, 500, 200, 150); PrinterGraphics.DrawEllipse(Pen, 200, 500, 200, 150); PrinterGraphics.DrawLine(Pen, 200, 500, 400, 650); Du erstellst einen Zeichenstift mit der Farbe schwarz und zeichnest anschließend ein Rechteck, Ellipse und eine Linie mit der angegebenen Farbe gruss |
AW: GDI+: Image drucken
Zitat:
Das Demo zeigt doch ein Vorgehen, wo man eine TGPGraphics Instanz (PrinterGraphic) erzeugt und zwischen Printer.BeginDoc und Printer.EndDoc fröhlich in die PrinterGraphic zeichnet. Soweit auch alles klar. Aber meine Grafik ist doch schon fertig! Die anvisierte Lösung von daywalker9 scheint mir in genau die richtige Richtung zu gehen -- allein ich weiß nicht, wie das praktisch gehen soll. Danke & Gruß Jazzman |
AW: GDI+: Image drucken
Bei TBitmap gibts ja das:
Delphi-Quellcode:
Kann dir leider nicht sagen, wie es bei GDI Image ist.
var
BMP, MyBMP : TBitmap; begin MyBMP:=TBitmap.create; MyBMP.LoadFromFile('C:\test.bmp'); BMP:=TBitmap.create; BMP.Height:=100; BMP.Width:=100; BMP.Canvas.Draw(0,0,MyBMP); |
AW: GDI+: Image drucken
TGPGraphics.Create(Printer.Handle); ?
Nicht TGPGraphics.Create(Printer.Canvas.Handle); ? PS: Was ich noch gefunden habe..
Delphi-Quellcode:
gruss
graphics := TGPGraphics.Create(tmpbitmap.Canvas.Handle);
graphics.DrawImage(InGP, DestRect, srcx, srcy, srcwidth, srcheight, UnitPixel); printer.canvas.copyrect(destrect, tmpbitmap.canvas, destrect); |
AW: GDI+: Image drucken
Manchmal ist die Lösung beschämend trivial: :?
Delphi-Quellcode:
Gruß
Printer.BeginDoc;
PrinterGraphics := TGPGraphics.Create(Printer.Handle); myPoint.X := 0; myPoint.Y := 0; PrinterGraphics.DrawImage(gImage, myPoint); Printer.EndDoc; Jazzman |
AW: GDI+: Image drucken
Zitat:
Ist aber auch manchmal ein kreuz mit GDI+ gruss |
AW: GDI+: Image drucken
Zitat:
Vielen Dank & Gruß Jazzman |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz