Windowsフォームアプリで黒字が白字になる謎現象との闘い(ActiveCaptionText)
あるWindowsフォームアプリケーションでtooltipを使っています。
ユーザーからtooltipの字を大きくできませんか?と要望がありました。
以下の方法で対応
tooltip.OwnerDraw=True
としてから、
tooltip.Drawイベントのハンドラに
Dim sf As StringFormat = New StringFormat()
sf.LineAlignment = StringAlignment.Center
sf.FormatFlags = StringFormatFlags.NoWrap
Dim f As Font = New Font("MS UI Gothic", フォントのサイズ)
e.DrawBackground()
e.DrawBorder()
e.Graphics.DrawString(e.ToolTipText, f, Brushes.ActiveCaptionText, e.Bounds, sf)
としました。
Win10の開発環境で確認してリリースしたところ「tooltipに文字が表示されてないです(枠と背景と枠は表示される)」との報告が。
この事象が発生したのはWin7のマシンで、しかも全部でなく一部、という非常に嫌なパターンです。
「tooltipに文字が表示されてない」の画面を、よーーーく見ると
なんかシミ(笑)のような白いのがうっすら見えるようなみえないような…
これ、文字は表示されています。でもなぜかフォントカラーが白い(開発時は黒だった)。
DrawStringで使用した
Brushes.ActiveCaptionText
これが悪さをしていました。
Win10や通常のWin7ではこれは黒です。
しかしWin7のディスプレイの個人設定のテーマで「クラシック」を選んでいると、白になってしまいます。
Brushes.Black
としましたら、解決。
なんで最初からこうしなかったのかというと、どこかのサンプルからコードをコピペしたからです。気を付けないと。
Windowsのシステムカラーが環境によってどう変化するかをまとめているサイトがあればと思ったのですが、見つかりませんでした。機会があればもう少し調べようと思います。
Author And Source
この問題について(Windowsフォームアプリで黒字が白字になる謎現象との闘い(ActiveCaptionText)), 我々は、より多くの情報をここで見つけました https://qiita.com/coarra/items/388750070be88e45dced著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .