• R/O
  • HTTP
  • SSH
  • HTTPS

CsWin10Desktop3: Commit

Visual C# 7.0, Windows10 Desktop App


Commit MetaInfo

Revision278c8de79ba7288169b2da6d5ccee59edc15541d (tree)
Time2017-09-18 20:52:18
Authorくまかみ工房 <kumakamikoubou@gmai...>
Commiterくまかみ工房

Log Message

文字列画像クラスで、描画効果(通常、ドロップシャドウ、縁取り)を選択できるよう修正。

Change Summary

Incremental Difference

--- a/FDK/メディア/文字列画像.cs
+++ b/FDK/メディア/文字列画像.cs
@@ -64,18 +64,48 @@ namespace FDK.メディア
6464 get;
6565 set;
6666 } = new Size2F( -1f, -1f );
67+ public Color4 前景色
68+ {
69+ get;
70+ set;
71+ } = Color4.White;
72+ public Color4 背景色
73+ {
74+ get;
75+ set;
76+ } = Color4.Black;
77+ public enum 効果
78+ {
79+ /// <summary>
80+ /// 前景色で描画。
81+ /// </summary>
82+ 通常,
83+ /// <summary>
84+ /// 文字は前景色で、影は背景色で描画する。
85+ /// </summary>
86+ ドロップシャドウ,
87+ /// <summary>
88+ /// 文字は前景色で、縁は背景色で描画する。
89+ /// </summary>
90+ 縁取り,
91+ }
92+ public 効果 描画効果
93+ {
94+ get;
95+ set;
96+ } = 効果.通常;
97+ /// <summary>
98+ /// 効果が縁取りのときのみ有効。
99+ /// </summary>
100+ public float 縁のサイズdpx
101+ {
102+ get;
103+ set;
104+ } = 6f;
67105
68106 public 文字列画像()
69107 {
70- }
71- public 文字列画像( string 文字列, float フォントサイズpt = 20.0f, string フォント名 = "メイリオ", FontWeight フォント幅 = FontWeight.Normal, FontStyle フォントスタイル = FontStyle.Normal )
72- : this()
73- {
74- this.表示文字列 = 文字列;
75- this.フォント名 = フォント名;
76- this.フォントサイズpt = フォントサイズpt;
77- this.フォント幅 = フォント幅;
78- this.フォントスタイル = フォントスタイル;
108+ // 必要なプロパティは呼び出し元で設定すること。
79109 }
80110
81111 protected override void On活性化( グラフィックデバイス gd )
@@ -90,8 +120,8 @@ namespace FDK.メディア
90120 }
91121 protected override void On非活性化( グラフィックデバイス gd )
92122 {
93- FDKUtilities.解放する( ref this._黒ブラシ );
94- FDKUtilities.解放する( ref this._白ブラシ );
123+ FDKUtilities.解放する( ref this._背景色ブラシ );
124+ FDKUtilities.解放する( ref this._前景色ブラシ );
95125 FDKUtilities.解放する( ref this._Bitmap );
96126 FDKUtilities.解放する( ref this._TextLayout );
97127 FDKUtilities.解放する( ref this._TextFormat );
@@ -191,41 +221,60 @@ namespace FDK.メディア
191221 //----------------
192222 #endregion
193223
194- #region " ブラシの作成がまだなら作成する。"
224+ #region " ブラシを作成または更新する。"
195225 //----------------
196- if( null == this._白ブラシ )
197- this._白ブラシ = new SolidColorBrush( this._Bitmap, Color.LightGray );
226+ this._前景色ブラシ?.Dispose();
227+ this._前景色ブラシ = new SolidColorBrush( this._Bitmap, this.前景色 );
198228
199- if( null == this._黒ブラシ )
200- this._黒ブラシ = new SolidColorBrush( this._Bitmap, Color.Black );
229+ this._背景色ブラシ?.Dispose();
230+ this._背景色ブラシ = new SolidColorBrush( this._Bitmap, this.背景色 );
201231 //----------------
202232 #endregion
203233
204234 // ビットマップレンダーターゲットにテキストを描画する。
205235 gd.D2DBatchDraw( this._Bitmap, ( rt ) => {
206236
207- rt.Transform = Matrix3x2.Identity; // ここではDPXtoPX変換は行わない。(ビットマップの描画時に行うので。)
237+ rt.Transform = Matrix3x2.Identity; // ここではDPXtoPX変換は行わない。(ビットマップの描画時に行うので。)
208238
209239 rt.Clear( Color.Transparent );
210240
211- rt.DrawTextLayout( // ドロップシャドウ
212- new Vector2( 1.0f, 1.0f ),
213- this._TextLayout,
214- this._黒ブラシ,
215- DrawTextOptions.Clip );
216-
217- rt.DrawTextLayout( // 本体
218- new Vector2( 0.0f, 0.0f ),
219- this._TextLayout,
220- this._白ブラシ,
221- DrawTextOptions.Clip );
241+ switch( this.描画効果 )
242+ {
243+ case 効果.通常:
244+ rt.DrawTextLayout(
245+ new Vector2( 0.0f, 0.0f ),
246+ this._TextLayout,
247+ this._前景色ブラシ,
248+ DrawTextOptions.Clip );
249+ break;
250+
251+ case 効果.ドロップシャドウ:
252+ rt.DrawTextLayout( // 影
253+ new Vector2( 1.0f, 1.0f ),
254+ this._TextLayout,
255+ this._背景色ブラシ,
256+ DrawTextOptions.Clip );
257+ rt.DrawTextLayout( // 本体
258+ new Vector2( 0.0f, 0.0f ),
259+ this._TextLayout,
260+ this._前景色ブラシ,
261+ DrawTextOptions.Clip );
262+ break;
263+
264+ case 効果.縁取り:
265+ using( var tr = new 縁取りTextRenderer( gd.D2DFactory, rt, this._背景色ブラシ, this._前景色ブラシ, this.縁のサイズdpx ) )
266+ {
267+ this._TextLayout.Draw( tr, 0f, 0f );
268+ }
269+ break;
270+ }
222271 } );
223272 }
224273
225274 private string _前回の表示文字列 = null;
226275 private TextFormat _TextFormat = null;
227276 private TextLayout _TextLayout = null;
228- private SolidColorBrush _白ブラシ = null;
229- private SolidColorBrush _黒ブラシ = null;
277+ private SolidColorBrush _前景色ブラシ = null;
278+ private SolidColorBrush _背景色ブラシ = null;
230279 }
231280 }
Show on old repository browser