C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

文字列にアンチエイリアスをかける方法 /ゲラルド (18/06/19(Tue) 12:24) #87677
Re[1]: 文字列にアンチエイリアスをかける方法 /Hongliang (18/06/20(Wed) 09:00) #87682
  └ Re[2]: 文字列にアンチエイリアスをかける方法 /ゲラルド (18/06/20(Wed) 10:18) #87685
    └ Re[3]: 文字列にアンチエイリアスをかける方法 /????? (18/06/20(Wed) 10:42) #87686
      └ Re[4]: 文字列にアンチエイリアスをかける方法 /ゲラルド (18/06/20(Wed) 11:42) #87687
        ├ Re[5]: 文字列にアンチエイリアスをかける方法 /にゃるら (18/06/20(Wed) 11:58) #87688
        └ Re[5]: 文字列にアンチエイリアスをかける方法 /魔界の仮面弁士 (18/06/20(Wed) 15:24) #87692
          └ Re[6]: 文字列にアンチエイリアスをかける方法 /G東郷 (18/06/20(Wed) 15:20) #87691
            └ Re[7]: 文字列にアンチエイリアスをかける方法 /ゲラルド (18/06/20(Wed) 16:25) #87693
              └ Re[8]: 文字列にアンチエイリアスをかける方法 /魔界の仮面弁士 (18/06/20(Wed) 22:45) #87699


親記事 / ▼[ 87682 ]
■87677 / 親階層)  文字列にアンチエイリアスをかける方法
□投稿者/ ゲラルド (1回)-(2018/06/19(Tue) 12:24:56)

分類:[.NET 全般] 

ラベルやテキストボックスの文字列に対して
アンチエイリアスをかけたいのですが
http://caro.blog.so-net.ne.jp/2014-09-08

このページのコードを使っても、うまくかかりませんでした。
環境はWin7 or Win10でVB2015を使用しています
どのようにすれば良いでしょうか?

[ □ Tree ] 返信 編集キー/

▲[ 87677 ] / ▼[ 87685 ]
■87682 / 1階層)  Re[1]: 文字列にアンチエイリアスをかける方法
□投稿者/ Hongliang (649回)-(2018/06/20(Wed) 09:00:39)
・そのコードを、あなたのプロジェクトにどう適用して、どうLabelExを使用しましたか?
 (カスタムコントロールの利用方法が分からない可能性を考慮しての念のための質問です)
・どうやってアンチエイリアスがかかっていないことを確認しましたか?
・使用しているフォントとフォントサイズは?
 一部のフォント、あるいはあるフォントサイズの範囲内はアンチエイリアスしないというフォントもあります。
[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87682 ] / ▼[ 87686 ]
■87685 / 2階層)  Re[2]: 文字列にアンチエイリアスをかける方法
□投稿者/ ゲラルド (3回)-(2018/06/20(Wed) 10:18:51)
新規でクラスを作成
上記のコードをコピーペースト
この状態ではツールボックスにLabelExは表れないので、一度ビルドする
その後、ツールボックスに現れたLableExをフォームに貼り付けて、文字列を入力
フォントは、MS UI Gothic, 12ptです。



[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87685 ] / ▼[ 87687 ]
■87686 / 3階層)  Re[3]: 文字列にアンチエイリアスをかける方法
□投稿者/ ????? (2回)-(2018/06/20(Wed) 10:42:12)
No87685 (ゲラルド さん) に返信
> フォントは、MS UI Gothic, 12ptです。

48ptぐらいにして確認してみてはどうでしょうか?

[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87686 ] / ▼[ 87688 ] ▼[ 87692 ]
■87687 / 4階層)  Re[4]: 文字列にアンチエイリアスをかける方法
□投稿者/ ゲラルド (4回)-(2018/06/20(Wed) 11:42:03)
20pt以上にするとアンチエイリアスがかかるようですが
こんなサイズでは表示しませんので
使えません。
あと、普通のlabelであってもフォントを大きくすると
アンチエイリアスがかかるようです
[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87687 ] / 返信無し
■87688 / 5階層)  Re[5]: 文字列にアンチエイリアスをかける方法
□投稿者/ にゃるら (24回)-(2018/06/20(Wed) 11:58:47)
No87687 (ゲラルド さん) に返信
> 20pt以上にするとアンチエイリアスがかかるようですが
> こんなサイズでは表示しませんので
> 使えません。

なるほど、単に「アンチエイリアス」処理が働くかどうかの質問ではなく、
特定のフォント、サイズでレンダリングされないということが問題なんですかね?

ちなみに何か別の「ソフトウェア」で利用されているフォント、サイズでアンチエイリアスがかかっているので、
同じようにレンダリングされることを期待されているということでしょうか?
それであれば質問者さんが解決したい問題となるのですが。。。

[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87687 ] / 返信無し
■87692 / 5階層)  Re[5]: 文字列にアンチエイリアスをかける方法
□投稿者/ 魔界の仮面弁士 (1716回)-(2018/06/20(Wed) 15:24:56)
No87687 (ゲラルド さん) に返信
> 20pt以上にするとアンチエイリアスがかかるようですが
> こんなサイズでは表示しませんので
> 使えません。

MS UI Gothic をアンチエイリアス描画するのは、フォントの品質的に厳しいと思います。

このフォントは、特定サイズ範囲では、ビットマップフォントでの描画が優先されるようになっています。
http://krk.asablo.jp/blog/2011/06/26/5929649



高解像度モニタ(dpi 設定値が 100% より大きいもの)の環境であれば、
一応、UseCompatibleTextRendering プロパティを true にすることで
アンチエイリアス処理されるのですが……メイリオ等とは異なり、
10pt 時のアンチエイリアス描画が想定されていないフォントなので、
実際に描画してみるとか、「汚い」結果になってしまうかと思います。
[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87688 ] / ▼[ 87693 ]
■87691 / 6階層)  Re[6]: 文字列にアンチエイリアスをかける方法
□投稿者/ G東郷 (1回)-(2018/06/20(Wed) 15:20:38)
2018/06/20(Wed) 15:26:52 編集(投稿者)

MS UI Gothic, 12ptの文字をスクショしてみると分かりますが、
文字の線は1ピクセルです。
この場合、アンチエイリアスを無理にかけようとすると
文字がぼやけてしまう問題があるため、
結果的に変わりないグラフィックになっているのかも知れません。

そもそも、.Netの時代では、大きな文字サイズのラベルであればちゃんとアンチエイリアスがかかっていますので、
元々アンチエイリアスをかける仕組みにはなっているが、フォントサイズが小さいと、1ピクセル線のため、敢えてアンチエイリアスを行っていない、
というのが実情のようです。

1ピクセル幅の線に対するアンチエイリアスの需要はほとんどないと思いますので、
そのようなことを意識している人は少ないように思います。
このため、回答を得られるのは難しいかも知れません。

Graphicsクラスには色々なプロパティがあるので、それを色々と調整してみるのも手かも知れません。
[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87691 ] / ▼[ 87699 ]
■87693 / 7階層)  Re[7]: 文字列にアンチエイリアスをかける方法
□投稿者/ ゲラルド (5回)-(2018/06/20(Wed) 16:25:50)
ありがとうございます。

ちなみにArialやtime new romansでも
うまくアンチエイリアスがかからないのですが
これもフォントの仕様でしょうか?
 
[ 親 87677 / □ Tree ] 返信 編集キー/

▲[ 87693 ] / 返信無し
■87699 / 8階層)  Re[8]: 文字列にアンチエイリアスをかける方法
□投稿者/ 魔界の仮面弁士 (1718回)-(2018/06/20(Wed) 22:45:41)
No87693 (ゲラルド さん) に返信
> ちなみにArialやtime new romansでも
> うまくアンチエイリアスがかからないのですが

当方環境でも実験してみました。Windows 10 環境で、画面の DPI 設定は 200% です。
やはり、MS UI Gothic は綺麗に表示されないですね。

http://vb-user.net/junk/replySamples/2018.06.20.22.30/MSUIGothic1.png
http://vb-user.net/junk/replySamples/2018.06.20.22.30/Arial1.png
http://vb-user.net/junk/replySamples/2018.06.20.22.30/TimesNewRoman1.png

これらの画像では、ラベルが 4 つ並んでいますが、
 左側:Label コントロール(標準)
 右側:LabelEx コントロール(TextRenderingHint.AntiAlias)
 上側:UseCompatibleTextRendering = True
 下側:UseCompatibleTextRendering = False
のように配置しています。また、
e.Graphics.CompositingQuality と
e.Graphics.PixelOffsetMode は変更していません。


合わせて、dpiAware を True に変更した場合も撮影してみました。
先ほどの画像と見比べてみてください。

http://vb-user.net/junk/replySamples/2018.06.20.22.30/MSUIGothic2.png
http://vb-user.net/junk/replySamples/2018.06.20.22.30/Arial2.png
http://vb-user.net/junk/replySamples/2018.06.20.22.30/TimesNewRoman2.png


Windows Form における高 DPI 設定についても紹介しておきます。
https://blogs.msdn.microsoft.com/ttanaka/2014/08/22/dpihigh-dpi-3-12503/
https://docs.microsoft.com/en-us/dotnet/framework/winforms/high-dpi-support-in-windows-forms
[ 親 87677 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -