進化判定結果を表示する
画面の構成は、前回内容を参照してください。
https://qiita.com/puyon/items/3343f1b0850bcacda66e
画面の構成は、こんな感じ。
コントロール | 役割 |
---|---|
TreeView | 判定したキャラ |
PictureBox | キャラ画像 |
TextBox | 判定内容 |
ToolStrip | 画面操作 |
判定したキャラの部分は、該当のキャラをTreeNodeへ追加していく。
判定内容の部分は、進化判定内容をセットする。
キャラ画像の部分、画面操作の部分については、こぱちゃんに教えてもらった。
キャラ画像の取得と表示
HTML取得したときに、キャラ画像へのURLが一緒にくっついてくるので、URL先から画像データをダウンロードする。
ダウンロードした結果を PictureBox へセットすると表示したことになる。
画像データのダウンロードは、HttpClientを使うと簡単につくれるとのこと。
結果として、byte配列が返ってくる。
public static async Task<byte[]> GetIconBytes(string url)
{
using (var client = new HttpClient())
{
var bytes = await client.GetByteArrayAsync(url);
return bytes;
}
}
byte配列を、今度は Image へ変換する。
public async Task LoadCharacterImageAsync(string url, PictureBox pic)
{
var bytes = await HtmlTool.GetIconBytes(url);
using (var ms = new MemoryStream(bytes))
{
pic.Image = System.Drawing.Image.FromStream(ms);
pic.Size = pic.Image.Size;
}
}
画面操作(キャラ詳細URLを開く)
「URL」をクリック、または、キャラ画像(PictureBox)をクリックすると、「デフォルトのブラウザ」でURLを開く。
結果として、特定キャラの詳細情報を確認することができる。
キャラの詳細情報URLも、HTML取得したときにくっついてくる。
デフォルトブラウザは、こんな感じで取得できるとのこと。
※他にもやりかたがあるらしい。
public static string getDefaultBrowser()
{
string progId = Registry.GetValue(
@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice",
"ProgId",
null
) as string;
return progId;
}
あとは、プロセスを起動する。
Process.Start(new ProcessStartInfo
{
FileName = ContentUrl,
UseShellExecute = true
});
※「デフォルトブラウザ」を取得しなくても、キャラ情報URLがわかっていたら、該当URLを表示可能です。
次回は。
アプリ作成の目的は、これで達成したので、ここらで一旦は終了とします。
読んでくださいました方々には、本当に感謝しています。
つたない内容でありましたこと、最後ですが、どうかご容赦ください。
まぁ、気が向いたら、多段階進化判定を取り上げたいと思います。
ここまで読んでくださった方、よろしければ、拙作アプリを試してみて感想など頂けると幸いです。
アプリのほうは、Ver2.0を考えています。
・多段階進化表示(表形式・グラフ形式)
・フォント切り替え
・メモ機能
・キャラ画像バックグラウンドDL
でわでわ ('ω')ノ