AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ein Bitmap mit mehr als 96dpi nötig
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Bitmap mit mehr als 96dpi nötig

Ein Thema von r29d43 · begonnen am 2. Dez 2008 · letzter Beitrag vom 3. Dez 2008
Antwort Antwort
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ein Bitmap mit mehr als 96dpi nötig

  Alt 2. Dez 2008, 16:53
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.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

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

  Alt 2. Dez 2008, 17:08
Vill. hilf dir dies:

SetBmpDPI
http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=borland.public.delphi .graphics&messageid=415d28d9$1@newsgroups.borland. com
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 2. Dez 2008, 20:17
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.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 3. Dez 2008, 21:50
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.)
  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 00:36 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