22
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C#で画面をつくる。何でつくる?

Last updated at Posted at 2021-03-05

C#で画面を作るときの選択肢について

はじめにの前に

Qiitaユーザーはzennに引越したのでしょうか。
投げ銭システムは魅力的ですよね。

Qiitaランキングの載っている記事が、個々人の備忘録のレベルに下がってきている気がしています(余計なお世話)

個人的には、記事を書くハードルが下がるので、棲み分けはよいことだと思います。

はじめに

.NET 6やらWinUI 3など、いろいろな技術がリリースされる中
私の主戦場はもっぱらWinFormsです。

たまにWPFも触るけど、UWPは触ったことなく
でもそろそろクロスプラットフォーム開発とかもしてみたいなー、と。

というわけで、この記事では
いろいろ知りたいこと(以下)を、ググりつつ情報をまとめていくための記事です。

  • UWPはユニバーサルらしいけど、WPFと何が違うの?
  • Uno Platformや、COCOAで話題のXamarinの違いは何なのか?

※注意:はじめに に対する結論があるとはかぎりません

WinForm, WPF, UWPの違い

マイクロソフト公式サイトに比較表があった。

プラットフォームの比較:UWP、WPF、Windows フォーム

表を見てもよく分からない。
勝手なイメージは・・・↓
WinFormn ||||||||すごい隔たり||||||||| WPF || UWP

とくにWPFUWPの違いが分からない。

  • UWPC++/WinRTC++/CX
  • WPFC++/CLI (C++マネージド拡張)

C++/CLI, C++/CX, WRL, C++/WinRT違いメモ
↑記事では、C++/CLIはグルー言語として使えると書いてある。
確かにC++ネイティブをC#から呼ぶときに、ラッパーとして使ったことがある。
そのとき参考にしたサイト↓
C#から、C++の関数の実行(クラス)

WinFormからWPF/UWPへの移行は大変?

たやすくはない。しかし得るものも多い。
よく見るのは、XAMLの学習コストが高いからWinFormのままにしておけという引き止め意見。

UWPは"Xbox、HoloLens、IoT、または Surface Hub のサポート"らしいけど、そんなに手広くやるつもりもない。

OpenCVなんかは、OpenCvSharpに比べて参考サイトが多いから
画像処理をC++で書いてC#から使うときは、WPFのほうが障壁が少なそうなイメージ。

あと綺麗な画面が比較的つくりやすい。
すでにあるWPFアプリをマテリアルデザインにする

クロスプラットフォーム開発について

C-SHARP

C#だったらXamarin(Xamarin.Forms?)、Uno Platform、あと新しいMAUI

Xamarin とは

Xamarin は、.NET を使用して、iOS、Android、Windows 向けの最新で高性能なアプリケーションをビルドするためのオープンソースのプラットフォームです。

What is the Uno Platform?

Unoプラットフォームは、UWPベースのコード(C#およびXAML)をiOS、Android、およびWebAssemblyで実行できるようにするユニバーサルWindowsプラットフォームブリッジです。

.NET MAUI is:

マルチプラットフォームのネイティブUI
モバイルとデスクトップ全体の複数のデバイスにデプロイ
単一のプロジェクト、単一のコードベースを使用
Xamarin.Forms進化
.NET 6

つまり・・・
Xamarin.FormsMAUIに進化した。
WebAssemblyに対応しているのはUno Platformだけ。

WPFの参考記事を多数執筆されているokazukiさんによるUno Platformデモ
C# で湯婆婆を Windows アプリと WebAssembly 対応してみた(無駄に MVVM)

脱線してC++

Qtがデファクトスタンダードなんですかね。
できることが多すぎる・・・

What is Qt?

Qtは、デスクトップ、組み込み、モバイル向けのクロスプラットフォームのアプリケーション開発フレームワークです。サポートされているプラ​​ットフォームには、Linux、OS X、Windows、VxWorks、QNX、Android、iOS、BlackBerry、SailfishOSなどがあります。

WebAssemblyにも対応
Qtを使って、デスクトップアプリ開発とWebAssemblyアプリ開発を同時に学ぼう

qt-wiki00.png

さらに脱線してPython

Qt + Python = デスクトップアプリケーションを作ることもできる

qt-creator.png

結論

MAUIを使います。
Visual Studio 2019での使い方を調べる

以上

参考

22
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?