Aeroにて文字までAeroになってしまう対策

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

近代的なアプリを制作するためによく使用されるAeroなのですが、設定をし、その上にラベルを普通においてしまうと文字までAeroになってしまいます。
その対策情報も公開されているのですが、非常に面倒なことになっています。
簡単に使えるようにライブラリ化させてみました。.NETならなんでも使えるはずです。VB.NETとか

対策をしていない状態

対策をしていない場合、このような表示になってしまいます。文字が読めません。必死に見てかろうじて読めるかな…?レベルです
aero-no-taisaku
 
だからといってラベルを使わねればいいんじゃない?といってもそんな訳にはいかないので対策をすることにします。

普通に表示させる

私の場合、予め用意したHDCにBitBltすることで対策をしています。アルファ値をいじることでも対策はできるのですが、今回はテーマラベルにも対応させるということでこの方法です。
aero-normal
また、BitBltする方法だと普通のSolidBrushを作り、DrawStringするだけで案外いけるみたいです。
ただメイリオフォント等はアンチエイリアスをしないとかなり酷いことになるのでアンチエイリアスは標準装備です。
aero-anti

上がアンチエイリアスあり、下がアンチエイリアスなしです。結果が歴然です。
 

テーマラベルへの対応

テーマラベルにする場合、DrawThemeTextExメソッドを使うことになるのですが、これまた非常に面倒くさい。予め用意したHDCに描き、それをBitBltする必要が出てきます。
aero-theme
黒いところの上にのせるとよくわかりますが、文字に白い影ができています。
これで背景がどんなところでも文字が見やすいです。Windowsシステムではタイトル表示によく使われていますね。
なおこれを実現するための描画部分のみのソースコードはこのような感じ。これが面倒でライブラリ化させています。
aero-source

使い方

解凍すると以下の3つのdllファイルが出てきます。

  • Sharoron.CExtension.dll
    様々な拡張メソッドを追加します。多分これは使用しなくても正常に作動すると思います。
  • Sharoron.NMethod.dll
    いろんなWinAPIメソッドをラッパー化しています。標準の名前空間はWinAPI
  • Sharoron.Control.dll
    コントロールはこちらにまとめています。今回紹介したラベルもこの中です。

下の2つだけでも動作すると思います。
ラベルの名前はAeroLabel、名前空間はWinAPI>Control.AeroLabelです。

プロパティ

  • DrawMode
    テーマラベルか、対策ラベルかを切り替えることができます。(Aero(テーマ)/Normal(通常))
  • GlowSize
    グロー効果の度合いを調整できます。デフォルト値:2
  • ShadowEnable
    影効果のオンオフを切り替えれます。正直、こっちでも対策ラベル状態にすることができます。少し動作が重めですが

主要なプロパティは上記の3つです。
背景はデフォルトで黒色にされています。
Aeroが有効ではないコンピューターではテーマラベル設定にしても強制的に対策ラベルに切り替わります。
なので、設定をしないとAeroが有効でないコンピューターでは黒地に黒色文字で書かれることになるので注意が必要です。

ダウンロード

自分用につくったライブラリなので多少のことは勘弁ください。
ただ何かバグなどがあった場合は遠慮なくご連絡ください。
自己責任でご使用ください。このライブラリによって負った支障や責任については製作者は一切負いません。
[wpdm_file id=8]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です