AGB  ·  Datenschutz  ·  Impressum  







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

PaintBox drucken

Ein Thema von bernie110 · begonnen am 20. Okt 2004 · letzter Beitrag vom 21. Okt 2004
Antwort Antwort
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#1

PaintBox drucken

  Alt 20. Okt 2004, 10:30
Hallo,
ich habe ein Problem, das ich trotz intensiver Suche in der DP noch nicht lösen konnte.

Ich habe eine sehr komplizierte Liniengrafik incl. eingestreuten Texten, die ich in die Paintbox (als Komponente einer Scrollbox) meines Formulars mit MoveTo, LineTo, TextOut etc. gezeichnet habe. Diese Paintbox ist ca. 3000 x 7000 Pixel groß, hängt aber von den zu zeichnenden Linien ab.

Das Ganze funktioniert ohne Probleme, solange ich die Grafik auf dem Bildschirm ausgebe. Wenn ich sie aber drucken will, so kommt nur der Bildschirminhalt - sogar mit Taskleiste - auf dem Drucker(-Canvas) an - und auch nur, wenn der linke obere Teil der PaintBox angezeigt wird.

Meine Frage ist nach dem grundsätzlichen Vorgehen in so einem Fall:

Ist die PaintBox die "richtige" Komponente?
Oder muss ich den Umweg über ein Bitmap gehen, das ich erst in die PaintBox und dann auf den Drucker ausgebe?
Oder ist Image oder Metafile das Richtige?

Und was kopiere ich dann auf den Drucker-Canvas?

Danke im Voraus für Eure Antworten!

Bernie
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: PaintBox drucken

  Alt 20. Okt 2004, 14:02
Genauso wie du auf das canvas der Paitnbox zeichnen kannst, kannst du auch auf den Canvas des Druckers zeichnen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#3

Re: PaintBox drucken

  Alt 20. Okt 2004, 15:13
Hallo,
heißt das, dass ich die Zeichenroutine auslagern muss (eigene Procedure) und dann 2x aufrufen muss: einmal für den Bildschirm und das andere Mal, wenn ich die Zeichnung drucken will?

Bernie
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: PaintBox drucken

  Alt 20. Okt 2004, 15:16
Hi!

Vielleicht geht es ja auch, indem du dem Canvas des Printers den Canvas der Paintbox zuweist? Oder zumindest ein Copy des einen Canvas auf den anderen. Das geht bestimmt fixer als immer 2x zeichnen.

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: PaintBox drucken

  Alt 20. Okt 2004, 15:29
Ich würde sowieso nicht direkt auf den Canvas der Paintbox zeichnen, sonder auf ein Bitmap im Speicher. das kannst du dann auch mit BitBlt aif den Canvas des Druckers kopieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#6

Re: PaintBox drucken

  Alt 21. Okt 2004, 10:10
Hallo,
Danke erst einmal für die Tipps!

Was ist eigentlich der Vorteil davon, erst auf ein Bitmap im Speicher zu zeichnen gegenüber dem Zeichnen in die Paintbox?

Bernie
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: PaintBox drucken

  Alt 21. Okt 2004, 11:05
Zitat von bernie110:
...erst auf ein Bitmap im Speicher zu zeichnen gegenüber dem Zeichnen in die Paintbox?...
Zum einen gibt es kein flackern wenn Du eine Aufwendige "Zeichnung" erzeugst da ja das fertige Bild kopiert wird.
Ausserdem kannst Du so das Bild wieder herstellen wenn es, z.B. durch ein darüber liegendes Fenster, gelöscht wurde.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: PaintBox drucken

  Alt 21. Okt 2004, 11:36
Grfaikausgaben auf den Canvas sind von Haus aus langsam. Das Zeichnen auf ein Bitmap im Speicher ist jedoch schnell. Und das kopieren des Bitmaps im Speicher auf den Canvas mit BitBlt ist auch wesentlich schneller als das direkte Zeichnen. Wie das mit dem OffScreenBitmap funktioniert, kannst du dir hier ankucken: http://www.luckie-online.de/Delphi/S...eenBitmap.html
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bernie110

Registriert seit: 13. Sep 2004
Ort: Uetersen
27 Beiträge
 
Delphi XE6 Professional
 
#9

Re: PaintBox drucken

  Alt 21. Okt 2004, 11:44
Hallo,
nochmals Danke für die Erläuterungen und den Link.

Nun habe ich für's Wochenende etwas zu tun (bisheriges Programm umschreiben und Drucken ausprobieren)

Bernie
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: PaintBox drucken

  Alt 21. Okt 2004, 11:46
Tipp: Installier dir einen Postscriptdrucker.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 03:25 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