前提
Shift-JIS文字列を、UIImageで生成した画像に表示しようと考えております。
現在以下のソースで描画を試みましたが、文字化けが発生してしまい、正しい表示となりません。
ソースコード
C#
1 // 保存先の参照を定義 2 UIImage image = null; 3 4 // 描画先となるウィンドウイメージを生成 5 CGSize windowSize = new CGSize(tw, th); 6 UIGraphics.BeginImageContextWithOptions(windowSize, false, 0); 7 8 // Contextの取得 9 CGContext context = UIGraphics.GetCurrentContext(); 10 11 // フォントの設定 12 UIFont font = UIFont.SystemFontOfSize((int)fontSize); 13 14 // 文字列の取得 15 // ※ここでどうするか? 16 NSString text = new NSString(str); 17 18 // イメージの透過色クリア 19 RectangleF rectF = new RectangleF(0, 0, tw, th); 20 context.SetFillColor(UIColor.Clear.CGColor); 21 context.FillRect(rectF); 22 23 // 描画座標Rectangleの生成 24 CGSize size = text.StringSize(font); 25 int half = (int)(((ih - (size.Height * mNativeScale)) / 2) * mScreenScale); 26 RectangleF textRect = new RectangleF(0, Math.Max(half, 0), iw, ih); 27 28 // 文字列の描画 29 context.SetFillColor(UIColor.Black.CGColor); 30 text.DrawString(textRect, font, UILineBreakMode.WordWrap, UITextAlignment.Left); 31 32 // イメージの取得 33 image = UIGraphics.GetImageFromCurrentImageContext(); 34 UIGraphics.EndImageContext();
やりたいこと
与えられたShift-JIS文字列である"str"を、UIImage上に正しく表示したいと考えております。
なお、ソースとなるShift-JIS文字列を、異なる文字コードで準備するのは現実的ではないとお考え下さい。
上記ソースの"※"の箇所を若干変更することで何とかなると考えているのですが、方策が見つかりません。
一旦NSData変数へ変換して…ということもやろうとしたのですが、良いC#ソースのサンプルが見つからず困っております。
何かいい手段はございませんでしょうか?
以上、どうぞよろしくお願いいたします。
追記
文字列の生成について追記いたします。
C#
1 int idx = 0; 2 String line; 3 4 // StreamReaderを開く 5 // ※外部リソースファイルからの読み込み 6 StreamReader reader = new StreamReader("bin_data/stage_data/stage_title"); 7 8 try 9 { 10 // 文字列保存テーブルの生成 11 mStageTitle = new string[100]; 12 13 // 読み込みループ 14 // ※最低でも1ラインは存在する 15 do 16 { 17 // 1ライン読み込み 18 line = reader.ReadLine(); 19 20 // 文章が存在しないならば終了 21 if (line == null) break; 22 23 // 空白行なら読み飛ばす 24 if (line.Length == 0) continue; 25 26 // 文字列をテーブルに保存 27 mStageTitle[idx++] = line; 28 } 29 while (true); 30 31 // StreamReaderを閉じる 32 reader.Close(); 33 } 34 catch (Exception e) 35 { 36 // catch節は省略 37 } 38
以上の処理で、外部ファイルから複数行の文字列を取得します。
先の出力処理におけるString変数"str"は、このmStageTitleテーブルから取得される1行の文字列となります。
(テーブルの添え字を使って、直接持ってくるだけです。)
外部ファイルはShift-JISによるテキストファイルとなり、その変更は互換性の関係から不可とされています。
以上、他に何か不足などございましたら、ご指摘お願いいたします。
回答1件
あなたの回答
tips
プレビュー