Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9366

.NET 5 から Windows Runtime API を呼ぶのが凄い楽になってる

$
0
0

.NET 5 Preview 8 かららしいのですが、Windows 10 の API に .NET 5 からアクセスするのが凄く楽になってました。言及のある記事は以下になります。

どれくらい簡単になったかというと、今回のこの記事がすぐ終ってしまうレベルで簡単です。すぐ終わると悲しいので、ちょっとだけ昔と比べてどれくらい簡単なのか?というのも書いておこうと思います。

Windows 10 SDK の特定のフォルダにある DLL や winmd ファイルを手動で参照追加したうえで、配布時に含まれてほしくないファイルはコピーされないように手動で設定する。
そんなに数は多くないのですがめんどくさかったです。

Microsoft.Windows.SDK.Contractsという名前の NuGet パッケージが追加されているので、それを参照することで呼べるようになります。まじ天国。

.NET 5 以降

Target Framework Moniker を設定するだけでよくなります。具体的にはプロジェクトファイルの TargetFramework タグに net5.0-windows10.0.17763.0のように Windows であることと対象のバージョン番号をつけるだけで良くなります。

やってみましょう。

VS 2019 Preview を起動して WPF プロジェクトをサクッと作ります。

プロジェクトファイルの TargetFramework を net5.0-windowsから net5.0-windows10.0.19041.0にします。以下のような感じですね。

<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net5.0-windows10.0.19041.0</TargetFramework><UseWPF>true</UseWPF></PropertyGroup></Project>

英語のブログのほうにもあるカメラからの写真撮影をやってみましょう。

MainWindow.xaml
// Windows 名前空間で始まるクラスが使える!?usingWindows.Media.Capture;usingWindows.Media.MediaProperties;usingSystem;usingSystem.Windows;usingSystem.Windows.Media.Imaging;usingSystem.IO;namespaceWpfApp8{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}privateasyncvoidButton_Click(objectsender,RoutedEventArgse){// カメラから画像取り込んで表示usingvarc=newMediaCapture();awaitc.InitializeAsync();varformat=ImageEncodingProperties.CreatePng();usingvars=newMemoryStream();usingvarrandomAccessStream=s.AsRandomAccessStream();awaitc.CapturePhotoToStreamAsync(format,randomAccessStream);awaitrandomAccessStream.FlushAsync();s.Position=0;varsource=newBitmapImage();source.BeginInit();source.CacheOption=BitmapCacheOption.OnLoad;source.StreamSource=s;source.EndInit();image.Source=source;}}}

動かしてみるとちゃんと動きます。(仮想カメラの画像を取り込んでる感じです)

cap.gif

昔 WPF でカメラ映像を取り込むのが凄く大変だった記憶があるので、こういう OS に紐づく API として提供されているものがさくっと呼べるのは心強いですね。

まとめ

ということで、NuGet パッケージを追加するだけというのでも簡単だったのですが .NET 5 から、さらに拍車をかけて簡単に Windows 10 の API が呼べるようになりました。便利~~~。


Viewing all articles
Browse latest Browse all 9366

Latest Images

Trending Articles