• R/O
  • HTTP
  • SSH
  • HTTPS

CsWin10Desktop3: Commit

Visual C# 7.0, Windows10 Desktop App


Commit MetaInfo

Revision1a32856e639a9f525e6a7a7e91b8e9ab5213cd05 (tree)
Time2017-09-24 22:23:41
Authorくまかみ工房 <kumakamikoubou@gmai...>
Commiterくまかみ工房

Log Message

画像フォントの描画メソッドに、DeviceContext を直接取るオーバーロードを追加。

Change Summary

Incremental Difference

--- a/FDK/メディア/画像フォント.cs
+++ b/FDK/メディア/画像フォント.cs
@@ -2,6 +2,8 @@
22 using System.Collections.Generic;
33 using System.Diagnostics;
44 using System.Linq;
5+using SharpDX;
6+using SharpDX.Direct2D1;
57
68 namespace FDK.メディア
79 {
@@ -24,7 +26,6 @@ namespace FDK.メディア
2426 : this( 文字盤の画像ファイルパス, new 矩形リスト( 文字矩形リストファイルパス ), 文字幅補正dpx, 不透明度 )
2527 {
2628 }
27-
2829 public 画像フォント( string 文字盤の画像ファイルパス, 矩形リスト 文字矩形リスト, float 文字幅補正dpx = 0f, float 不透明度 = 1f )
2930 {
3031 this.子リスト.Add( this._文字盤 = new 画像( 文字盤の画像ファイルパス ) );
@@ -77,7 +78,54 @@ namespace FDK.メディア
7778 基点のX位置 += ( 文字矩形.Width + this.文字幅補正dpx );
7879 }
7980 }
81+ public void 描画する( DeviceContext1 dc, float 基点のX位置, float 上位置, string 表示文字列, bool 右揃え = false )
82+ {
83+ if( 表示文字列.Nullまたは空である() )
84+ return;
85+
86+ var 文字列全体のサイズ = SharpDX.Size2F.Empty;
87+
88+ #region " 有効文字(矩形リストに登録されている文字)の矩形、文字数を抽出し、文字列全体のサイズを計算する。"
89+ //----------------
90+ var 有効文字矩形リスト =
91+ from 文字 in 表示文字列
92+ where ( this._文字矩形リスト.文字列to矩形.ContainsKey( new string( new char[] { 文字 } ) ) )
93+ select this._文字矩形リスト.文字列to矩形[ new string( new char[] { 文字 } ) ];
94+
95+ int 有効文字数 = 有効文字矩形リスト.Count();
96+ if( 0 == 有効文字数 )
97+ return;
98+
99+ foreach( var 文字矩形 in 有効文字矩形リスト )
100+ {
101+ 文字列全体のサイズ.Width += ( 文字矩形.Width + this.文字幅補正dpx );
102+
103+ if( 文字列全体のサイズ.Height < 文字矩形.Height )
104+ 文字列全体のサイズ.Height = 文字矩形.Height; // 文字列全体の高さは、最大の文字高に一致。
105+ }
106+ //----------------
107+ #endregion
108+
109+ // 描画する。
110+ if( 右揃え )
111+ {
112+ 基点のX位置 -= 文字列全体のサイズ.Width;
113+ }
114+ for( int i = 0; i < 有効文字数; i++ )
115+ {
116+ var 文字矩形 = 有効文字矩形リスト.ElementAt( i );
117+
118+ dc.DrawBitmap(
119+ this._文字盤.Bitmap,
120+ new RectangleF( 基点のX位置, 上位置 + ( 文字列全体のサイズ.Height - 文字矩形.Height ), 文字矩形.Width, 文字矩形.Height ),
121+ this.不透明度,
122+ InterpolationMode.Linear,
123+ 文字矩形,
124+ null );
80125
126+ 基点のX位置 += ( 文字矩形.Width + this.文字幅補正dpx );
127+ }
128+ }
81129
82130 private 画像 _文字盤 = null;
83131
Show on old repository browser