|
レスありがとうございます。
結果から申し上げますと成功致しました。
一応成功したソース(2パターン)を記載しておきます。(何方かにお役になれば)
// ■考察2 - 成功 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = asm.GetManifestResourceStream("Test.image.iconB1.ico");
FileStream writer = new FileStream(m_strPathInstallDir + "image\\iconB1.ico", FileMode.Create, FileAccess.Write );
int nbyte; while ((nbyte = s.ReadByte()) != -1) { writer.WriteByte((byte)nbyte); } writer.Close(); s.Close();
// ■考察3 // リソースからストリーム作成 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Stream sIcon = asm.GetManifestResourceStream("TestP.image.iconB1.ico");
// ファイル作成 BinaryReader read = new BinaryReader(sIcon); FileStream fs = new FileStream(m_strPathInstallDir + "image\\iconB1.ico", FileMode.Create); BinaryWriter write = new BinaryWriter(fs);
// ストリームから読出してファイルに書込み byte[] bt = new byte[sIcon.Length]; sIcon.Read(bt, 0, bt.Length); write.Write(bt);
// クローズ sIcon.Close(); read.Close(); write.Close(); fs.Close();
とりあえずバイナリファイルなので、■考察3で実装することにしました。
速度を計ってはいませんが、1バイトづつ読書きするよりかは早いかと・・・
予断ですが、
■考察1 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream s = asm.GetManifestResourceStream("TestP.image.iconB1.ico");
Bitmap bmp = new Bitmap(asm.GetManifestResourceStream("TestP.image.iconB1.ico"));
bmp.Save(m_strPathInstallDir + "image\\iconB1.ico", System.Drawing.Imaging.ImageFormat.Icon);
というのも作ってみまして、実行したところ、アイコンファイルが出来るのですが、
アイコンファイルはディレクトリの一覧で目で見たときに、既にそのアイコンが表示されるはずですが、何故かシステムの不明なアイコンが表示されていました。
クリックしてビューアで見てみますと、意図したアイコンが表示されるのですが、
中身は元のバイナリと違っておりました。
■考察1だと何が悪いのか分からないのですが、お分かりでしたら教えて頂けると幸いです。
|