AGB  ·  Datenschutz  ·  Impressum  







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

GDI+: Image drucken

Ein Thema von Jazzman_Marburg · begonnen am 11. Jul 2011 · letzter Beitrag vom 12. Jul 2011
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

GDI+: Image drucken

  Alt 11. Jul 2011, 20:23
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 :
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 20:47
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.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#3

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 21:20
Du musst im Grunde nur zwischen dem BeginDoc und EndDoc dein aktuelles Image auf die PrinterGraphics kopieren.
Jepp -- nur wie?

Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 21:44
Zitat:
aber die anderen Zeilen zwischen Printer.BeginDoc und Printer.EndDoc sind mir unklar:
Delphi-Quellcode:
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);
Was ist da unklar?
Du erstellst einen Zeichenstift mit der Farbe schwarz
und zeichnest anschließend ein Rechteck, Ellipse und eine Linie mit der angegebenen Farbe

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#5

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 21:55
Was ist da unklar?
Du erstellst einen Zeichenstift mit der Farbe schwarz
und zeichnest anschließend ein Rechteck, Ellipse und eine Linie mit der angegebenen Farbe
gruss
Meine Zeichnung ist bereits fertig -- ich sehe sie auf dem Monitor. Was tun mit gImage (IGPImage)?

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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#6

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 22:18
Bei TBitmap gibts ja das:

Delphi-Quellcode:
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);
Kann dir leider nicht sagen, wie es bei GDI Image ist.
Lars
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: GDI+: Image drucken

  Alt 11. Jul 2011, 22:38
TGPGraphics.Create(Printer.Handle); ?
Nicht TGPGraphics.Create(Printer.Canvas.Handle); ?

PS:
Was ich noch gefunden habe..

Delphi-Quellcode:
graphics := TGPGraphics.Create(tmpbitmap.Canvas.Handle);
graphics.DrawImage(InGP, DestRect, srcx, srcy, srcwidth, srcheight,
UnitPixel);
printer.canvas.copyrect(destrect, tmpbitmap.canvas, destrect);
gruss

Geändert von EWeiss (11. Jul 2011 um 22:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#8

AW: GDI+: Image drucken

  Alt 12. Jul 2011, 18:09
Manchmal ist die Lösung beschämend trivial:
Delphi-Quellcode:
  Printer.BeginDoc;
    PrinterGraphics := TGPGraphics.Create(Printer.Handle);
    myPoint.X := 0;
    myPoint.Y := 0;
    PrinterGraphics.DrawImage(gImage, myPoint);
  Printer.EndDoc;
Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: GDI+: Image drucken

  Alt 12. Jul 2011, 18:30
Manchmal ist die Lösung beschämend trivial:
Delphi-Quellcode:
  Printer.BeginDoc;
    PrinterGraphics := TGPGraphics.Create(Printer.Handle);
    myPoint.X := 0;
    myPoint.Y := 0;
    PrinterGraphics.DrawImage(gImage, myPoint);
  Printer.EndDoc;
Gruß
Jazzman
Dann hat mein post ja doch was gebracht..
Ist aber auch manchmal ein kreuz mit GDI+

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#10

AW: GDI+: Image drucken

  Alt 12. Jul 2011, 20:48
Ist aber auch manchmal ein kreuz mit GDI+
gruss
Ja, aber ist schon auch 'ne Wucht! Mit einfachem GDI hätte ich mein Projekt nicht hinbekommen. Ich weiß halt nicht wo ich eine Delphi-kompatible Dokumentation zu GDI+ finde. Ich nutze die Library von Erik van Bilsen -- großartig, nur eine umfangreichere Doku wäre halt super.

Vielen Dank & Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  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 04:54 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