GraphicsUnit.Pointは、PDFにうまく変換できません。 GraphicsUnit.Worldはそうですが、どうすればPointに変換できますか?

StackOverflow https://stackoverflow.com/questions/258035

  •  06-07-2019
  •  | 
  •  

質問

GDI +を使用してテキストコンテンツを描画するコードが.Netにあります。 GraphicsUnit.Pointを使用してテキストのサイズを変更しました。画面上で、また印刷しても素晴らしい動作をします。

PDFを生成するシステムを作成するように依頼されましたが、ComponentOneのPDFコントロールを取得しました。 GDI +と同様のインターフェースを備えています。

問題は、フォントサイズが機能しないことです。 GraphicsUnit.Pointを使用すると、テキストはずっと小さくなり、テキストの下に空きスペースができます。 GraphicsUnit.Worldを使用すると、テキストはまだ小さいですが、テキストの下に余分な空きスペースはありません。

GraphicsUnit.WorldをGraphicsUnit.Pointに変換する方法を理解したい。

すべてのヘルプに感謝します。

ありがとう

役に立ちましたか?

解決

Googelingをいくつか行った後、GDI +と文字列描画の個人的な経験から私が知っていることから、DPI(Dots per Inch)に帰着します。基本的に、異なるデバイス(およびGDI +に関する限り、PDFはおそらくデバイスです)は異なるDPI値を持っています。通常、ディスプレイには70 DPIのようなものがあります。プリンタは72を使用します。PDFが何を使用するのかわかりませんが、100になる可能性があります(これはデバイス独立性の一般的な値であり、小さいテキストを説明するためです)。

現在、ポイントは72 DPIとして定義されています。これは常に真実です。異なるDPIでPDFに描画するときにGDI +が行うべきことは、それに応じて文字列描画を変換することです。しかし、これは、特にテキストの場合、常に機能するとは限りません。

GraphicsUnit.Worldは(一部のgoogelingによれば)デバイスに依存せず、すべてのデバイスで同じように見える必要があります。

他のヒント

そうです、GraphicsUnit.Worldは印刷でも画面でも同じように見えます。私の最後の解決策は、GraphicsUnit.Worldを測定単位として使用し、ポイントを排除することでした。コンバージョン率はまだわかりませんが、外観が問題ないまで値を概算しました。

私の目的にはこれで十分でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top