先日のmp3用ツールでカバーアートを表示する機能をつけたので、それ用にAvaloniaをチョイスしてみました。

Avaloniaは色々雑多に割拠しているデスクトップフレームワークの1つです。大きな特徴としては、UIはネイティブベースということではなく、Skiaで描いたヤツを使っています。アプローチとしてはFlutterも同じですね。この為、基本的にはどのデバイスでも同じ絵になることが期待できます(…のはず)。採用している有名なアプリだとJetBrains RiderやLunacy、GitのGCMフロントエンドなどがあります。

この理由としてはWindows / Linuxに対応してみたかった為。現状のWindows Forms / WPFだとWindowsオンリーになりますし、MAUIだとLinuxアプリはサポートしていないと言うデメリットがあります。 Avaloniaはデスクトップ・スマホをフルサポートしてるので、結構間口広め。

ものすごい簡単な内容なので、別言語で組み立てる(Pythonのtkinterとか)のもアリかもしれませんが、C#だし個人ツールの本体側からコードベースで実行できるようにしたかったので、このままいけばいいかと言う事でやってみた。

導入としてはVisual Studioに公式拡張を入れるだけで簡単にセットアップできました。

ビルドも思ったより楽です。ターゲットフレームワークを切り替えてdotnet publishするだけ。ええ、こんな簡単だったの。Ubuntu Desktopで確認しましたが、全然動きました。

で、物凄く初歩のとこしかいじってないのですが、感想としてはWPFとかなり近いです。大雑把な違いが見えてくる点としては、拡張子がaxmlとか、そんなくらい。MVVM対応でCommunityToolkit.MVVMがデフォで使えます。 デザイナもついてるので、見た目を確認しつつXAMLを組み立てられます。素晴らしい。

使うクラスはオリジナルものも結構ありそうです。例えば、Imageコントロールに使うソースにビットマップデータを設定したかったのですが、これはAvalonia.Media.Imaging空間のBitmapクラスを使えば良いそう。

あと、メッセージボックスがとりあえずありませんでした。これはMessageBox.Avalonia というのがあり、そんな感じのサードパーティ使うか自分で作ってね、みたいな感じらしい。

とりあえずそんなこんなでとりあえずやりたいことは出来たっぽいので良かった。