- - PR -
TextRenderer.DrawTextとGraphics.DrawString
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-24 17:47
NET Framework 2.0では、Windowsフォームに文字列を描画する方法として
新たにTextRendererクラスのDrawTextメソッドが加わっていますが、 TextRenderer.DrawTextを使用するメリットはなんなんでしょうか? TextRenderer.DrawTextがGDIによる描画で、 Graphics.DrawStringがGDI+による描画が行われているというのは わかるんですが、なぜこのようなメソッドが追加されたのかがわかりません。 私の環境で実験したところ、Graphics.DrawStringに比べて TextRenderer.DrawTextは描画速度が遅かったです。 自コントロールの文字列描画はGraphics.DrawStringから TextRenderer.DrawTextに書き換えたほうがいいんでしょうか? | ||||
|
投稿日時: 2006-10-24 18:23
こんにちは。
私も正確にはわかりませんが(というか TextRenderer 自体初めて知りました) sou さん自身が答えを書いておられるのではないでしょうか。 GDI と GDI+ では描画のアルゴリズムも微妙に違う(と思う)し、純粋な GDI での出力がほしい場合に TextRenderer クラスを使用するという感じではない でしょうか。 自コントロールの文字列描画を書き換える必要は特になさそうですが、書き換え ない理由も特にない…かなあ(書き換えるのが面倒というのは理由になるでしょ うか)。 そのあたりで役に立ちそうな Lady.BUG さんのはてなダイアリを。 http://d.hatena.ne.jp/ladybug/20060206 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2006-10-24 23:00
ダッチです。
GDI+ テキスト、解像度への非依存性、およびレンダリング メソッド こちらのサイトに詳しく違いが説明されています。 解像度に依存しないのが GDI+ ということですね。 でも「あ‐」を描画したときに「あ」と描画されることもあるようです。 この例はこちらの @IT さんのスプレッドの説明にのっていました。 ぽぴ王子さんも仰られているように GDI を使用しなければならないということはありません。 なにも問題がないのであればそのまま GDI+ を使用すればいいと思います。 | ||||
|
投稿日時: 2006-10-26 23:23
ぽぴ王子さま
ダッチさま ご教授ありがとうございます。 描画関係は全くもって不勉強でしたので大変参考になりました。 それにしても、私の個人的な感想としては、 .NET1.Xの時に比べて.NET2.0では、 全体的にコントロールの描画が遅くなっているような気がするんですが、 そう感じるのは私だけ? 同じアプリケーションでも.NET1.Xではきびきび描画されていたのに .NET2.0ではもさっとした感じで再描画が行われる。 | ||||
|
投稿日時: 2006-11-14 21:15
横からすみません。私も同じことを感じました。 調べて見たところ、ControlPaintクラスのDraw関連のメソッドが 10倍以上性能劣化(ざっくりです。)していたためだと思われます。 うーんという感じです。 |
1