😽
AvaloniaUI Assetsへのコードからのアクセス方法
やりたいこと
Visual Studio 2022 + AvaloniaUI環境でAssetsにいれたファイルにC#のコードからアクセスしたい
使用環境
Windows 11 : Home 22H2 + Visual Studio Community 2022(64bit)
Linuxテスト環境 : 上記Windows上のWSL2 Ubuntsu 22.04.2 LTS
Visual Studio2022, AvaloniaUI 11.0.2
Assetsへのアクセス方法
Abalonia.Platform.AssetLoaderを介してURLに"avares://ApplicationName/Assets/*"を指定して読み込む。
追加したAssetのプロパティでビルドアクションが"AvaloniaResource"になっている必要がある。
image取得
var bitmap = new Bitmap(AssetLoader.Open(new Uri("avares://TestApp/Assets/Image/Test.png")));
下記参考
を扱えるとある。
stringの取り出し
stringを取得するmethodはなさそうだったので、
AssetLoaderからのstream経由でstringに変換する
string str;
using (var stream = AssetLoader.Open(new Uri("avares://TestApp/Assets/Text/Test.txt")))
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
var encoding = Encoding.GetEncoding("UTF-8");
str = encoding.GetString(buffer);
}
Discussion