![]() |
PaintBox drucken
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 |
Re: PaintBox drucken
Genauso wie du auf das canvas der Paitnbox zeichnen kannst, kannst du auch auf den Canvas des Druckers zeichnen.
|
Re: PaintBox drucken
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 |
Re: PaintBox drucken
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 |
Re: PaintBox drucken
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.
|
Re: PaintBox drucken
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 |
Re: PaintBox drucken
Zitat:
Ausserdem kannst Du so das Bild wieder herstellen wenn es, z.B. durch ein darüber liegendes Fenster, gelöscht wurde. |
Re: PaintBox drucken
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:
![]() |
Re: PaintBox drucken
Hallo,
nochmals Danke für die Erläuterungen und den Link. :) Nun habe ich für's Wochenende etwas :wink: zu tun (bisheriges Programm umschreiben und Drucken ausprobieren) :coder: Bernie |
Re: PaintBox drucken
Tipp: Installier dir einen Postscriptdrucker. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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