少しばかとしての.resxでの画像、しかし...ストアバイト[]ではなく、ビットマップ
ビットマップとしての.resxで.jpgファイルを処理するVisual Studioのを防止する方法はあります私ができるように、代わりにリソースのbyte []プロパティにアクセスしますか?
私はしたいん:私の知っている
byte[] myImage = My.Resources.MyImage;
少しばかとしての.resxでの画像、しかし...ストアバイト[]ではなく、ビットマップ
ビットマップとしての.resxで.jpgファイルを処理するVisual Studioのを防止する方法はあります私ができるように、代わりにリソースのbyte []プロパティにアクセスしますか?
私はしたいん:私の知っている
byte[] myImage = My.Resources.MyImage;
だからあなたはJPG ClassLibrary1の中に「foo.jpgという」を持っていると言うことができます代わりに
を「埋め込まれたリソース」を使用してみてください。 "Build Action"を "Embedded Resource"に設定します。
その後
byte[] GetBytes(string resourceName)
{
var assembly = GetType().Assembly;
var fullResourceName = string.Concat(assembly.GetName().Name, ".", resourceName);
using (var stream = assembly.GetManifestResourceStream(fullResourceName))
{
var buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int) stream.Length);
return buffer;
}
}
あなたはより多くの再利用可能な方法をしたい場合は
、バイトbyte[] GetBytes()
{
var assembly = GetType().Assembly;
using (var stream = assembly.GetManifestResourceStream("ClassLibrary1.Foo.jpg"))
{
var buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int) stream.Length);
return buffer;
}
}
または、代わりを取得するには、このコードを使用して
var bytes = GetBytes("Foo.jpg");
ええ、これは私が本当に望むものだと思います。アセンブリの中にファイルをたくさん並べて、ビルド時に出力する代わりにコードから作成できるようにする方法です。 – Grokodile
まさか、あなたはビットマップからビットマップではないが、バイト配列が含まれて返すように.designer.csで生成されたコードを再定義することができますが。
私は自動生成されたものではあまりありません。あなたはおそらくそれが再び生成されるようにトリガされ、現在メンテナンスの頭痛があります。 –
付けを呼び出しますjpegは "myfile.jpeg.bin"のような別の拡張子を付けます。 Visual Studioはそれをバイナリファイルとして扱い、生成されたデザイナコードはbyte []を返します。
また、.resx
ファイルを右クリックして[コードの表示]をクリックしてください。
編集このようSystem.Byte[]
を使用するXMLリソース項目:
<data name="nomap" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\nomap.png;System.Byte[]</value>
</data>
保存して、あなたがBitmap
これは私のためにのみ動作します。ありがとうございました –
注:** Resource.Designer.cs **ファイルと混同しないでください。タイプが変更されると、実行時エラーが発生します。 ** Resource.resx **ファイルでタイプが変更されますか。 –
の代わりに
Byte[]
を使用することができるはず、それはこれを行うには、あなたのアプリのパフォーマンスを傷つけるつもりです? 'ImageConverter converter =新しいImageConverter(); –