Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ein Bitmap mit mehr als 96dpi nötig (https://www.delphipraxis.net/125217-ein-bitmap-mit-mehr-als-96dpi-noetig.html)

r29d43 2. Dez 2008 15:53


Ein Bitmap mit mehr als 96dpi nötig
 
Hi,

gibt es eigentlich irgendeine Möglichkeit, die dpi-Einstellung eines Bitmaps von 96 auf einen anderen/höheren Wert zu ändern?


Hintergrund: Ich möchte die Ausgabe eines Druckes auf einem Bitmap simulieren. Wo also bisher ein RichEdit mittels der EM_FORMATRANGE-Message seinen Text auf die Printer-Canvas (600dpi) schrieb, macht das RichEdit das nun stattdessen auf die Bitmap-Canvas.

Problem dabei: Auf dem gedruckten Blatt Papier kommen so (im jeweils äquivalent gleichen Output-Rechteck) immer 7 Textzeilen mehr zum Vorschein (von 62 insgesamt) als auf dem Bitmap.

Vermutete Ursache, imo: Aufgrund der wesentlich höheren Auflösung der Printer-Canvas (=600dpi) kann hier die wahre Höhe des Charakters besser wiedergegeben werden. Bei einer 96dpi-Auflösung wäre eine entsprechende Char-Höhe vielleicht genau 7,2 Pixel hoch und muss daher immer auf volle 8 Pixels aufgerundet werden. Daher ist die Schrift auf dem Bitmap minimal höher (als auf dem Papier) ...und entsprechend weniger Zeilen finden dann auch auf dem Bitmap Platz.


Ergo würde ich nun auch mal gerne einen Versuchslauf mit einem Bitmap starten, dessen dpi ebenfalls auf 600 eingestellt ist. Geht das überhaupt, und wenn ja, wie?


Thx schonmal im Voraus,
rXdY


(Ansonst bliebe zur Not nur noch mehr, immer wieder gleich auf die Printer-Canvas auszugeben und nach dem BitBlt-Transfer seines Inhaltes auf das Bitmap den Printvorgang dann wieder zu Aborten) ...was ich aber irgendwie nicht so ganz ideal finde.

turboPASCAL 2. Dez 2008 16:08

Re: Ein Bitmap mit mehr als 96dpi nötig
 
Vill. hilf dir dies:

SetBmpDPI
http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=borland.public.delphi .graphics&messageid=415d28d9$1@newsgroups.borland. com

r29d43 2. Dez 2008 19:17

Re: Ein Bitmap mit mehr als 96dpi nötig
 
Thx, aber leider ist der Effekt dieser Funktion irgendwie nicht spürbar. Sie wird zwar ohne irgend einen Error durchlaufen, aber wenn ich danach z.B. folgendes ausführe

GetDeviceCaps(ABitmap.Canvas.Handle, LOGPIXELSX)

heißt es trotzdem immer noch "96dpi". Auch das RichEdit, das mittels dieser EM_FormatRange-Message da seinen Text draufschreibt, tut das auch danach immer noch genauso wie bei einem 96dpi-Bitmap.

r29d43 3. Dez 2008 20:50

Re: Ein Bitmap mit mehr als 96dpi nötig
 
Zitat:

Zitat von r29d43
(Ansonst bliebe zur Not nur noch mehr, immer wieder gleich auf die Printer-Canvas auszugeben und nach dem BitBlt-Transfer seines Inhaltes auf das Bitmap den Printvorgang dann wieder zu Aborten) ...was ich aber irgendwie nicht so ganz ideal finde.

sogar das geht nicht! Irgendwie scheint die Printer.Canvas nur beschreibbar zu sein, aber nicht lesbar. Weder mit StretchBlt noch mit Printer.Canvas.Pixels[,] bekomme ich da irgend etwas an Inhalt heraus. Kommt dann aber eine Zeile darunter die Printer.EndDoc-Anweisung, dann taucht auf dem Ausdruck dieser Printer.Canvas-Inhalt aber trotzdem ganz normal auf.


Sonst keine Ideen mehr, wie man so ein Bitmap als 600dpi-Leinwand verkleiden könnte?
(Also so, dass die anderen Api-Funktionen etc. das dann auch als ein solches 600dpi-Teil handhaben.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 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