ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

流行りのWPFについて雑記…

最近、流行しているWPFについてたらたら~っと書きます。

流行しているというより、MicrosoftだけがWPFを取り上げている感じがしますね…。

ただ、優れていると色んなところで言われているようですよ。


さて、詳しく調べていないのでよく分かりませんが、
Windows 8の顔ともいえるUIの、“Modern UI”(四角いパネルのやつ)もWPFで作られているみたいです。

…あれ、中身はネイティブなのかな、
Win8から中身はネイティブなのに.NETの言語から.NETのアセンブリのように呼び出せるAPIができたみたいなんですよ。

まぁ、どっちにせよ、Modern UIもWPFのようにXAMLベースなんです。



WPFはWindows Formsより優れていると、よく言われますが、
やはり、移行のハードルが高いんですよね。

Windows Formsとは勝手が180度、異なるんですよ。

たとえば、私がWPFをちょっと触ってみて、まず驚愕だったのが、コントロールにLocationプロパティが無い

基本的にはGridというコンテナを設置して、Marginを指定するようです。

マージンってよく分からないんですよね…。

HTMLはマージンを使うと思いますから、HTMLを書く人にとっては普通に使っているものなのでしょうか。

なぜRight, Buttomが必要なんだ…??


ちなみに、Canvasというコンテナもあって、CanvasではいつもみたいにX,Yで指定できるようです。

ただ、WPFはGridが“常識”のようですから、WPFをやるならその“常識”を身につけなければなりませんね。

Canvasなんかに甘えていられません。

そういえば、StackPanelというコンテナもありますが、レベルが高すぎてよく分かりません(笑)

「よく分かりません」ばっかり言ってますね…。


私はSilverlightも、ちょっとだけ触っていましたが、あれも概念はWPFと一緒なんですよね。

ただ、SilverlightはWPFじゃないんですよ。

WPFはUIに使うライブラリですから.NET Frameworkに入っています。
WPFは.NET Frameworkの技術です。

しかし、Silverlightは.NET Frameworkではなく、Silverlightというフレームワークが別にあるんです。
サブセットと言いますけど。

.NETのMac版は無くても、SilverlightのMac版はあります。

実は、別物なんですよ。

まぁ、中身は.NET Frameworkと同じだとは思いますが、それはWPF部分の話です。

いつも、デスクトップアプリケーションで使っているような、.NETライブラリはSilverlightには必要ないです。

なので、そいつらは切り落としちゃいます。
これで、軽量化につながります。

さらに、オーバーロードする数を減らして軽量化に力をいれているみたいですね。

Silverlightはマルチプラットフォームが売りですからね。



そういえば、Silverlightで「Hello, world!」を作ったときも、Marginに苦しめられた記憶があります。

文字列の移動を実装するさいに、最初は

TextBlock(Labelみたいなもん)の座標 = マウスポインタの座標
// ↑は抽象的すぎますが…。

というふうなコードでやろうと思っていたのに、無理なんですよ。

Marginなんですよ。Margin。

まぁ、むりやり実装しましたけどね~。


さて、Windows Formsとは勝手が違いすぎますが、なんかMicrosoftはこれを勧めているみたいなんですよね。

それに、@ITなどでもWPFは優れていると言われていますし。

内部でDirect Xを呼んでいて、GPUを使うため描画が速いらしいです。

Windows 8が普及していく今後、Windows Formsは廃れてゆくのでしょうかね~。

自分もこれからどうしようか…。WPFを覚えるべきなのか…。


ところで、WPFに一つ文句を言いたいのですが、コントロールが少なすぎます。

Label, ButtonやCheckBox、そしてListBoxと、基本的なコントロールは用意されていますが、
Windows Formsのものほど種類が多くありません。

たまに、マイナーなコントロールを要する場面があるのですが、WPFにはそれがないんですよね。

WPFの標準コントロール以外に、フリーのUIライブラリから探してみたらあるかも知れませんが、
非標準のライブラリを含めるのは抵抗があるんですよね。

それに、フリーのUIライブラリは、ほとんどがWindows Forms用ですから、
やはりWindows Formsのほうが圧倒的なバリエーションになってしまいます。

みんながWPFに移行すれば、WPF用のUIライブラリも増えるのでしょうけど。

結論を言いますと、せめてWindows Formsにあるコントロールは、全てWPFにも標準コントロールとして含めて欲しいです。


さて、まとまっていない文章を長ったらしく書きすぎてしまいましたね。
今日はここらへんにしておきましょう。

頑張れ!WPF!

tag:

コメント

untitled

html ではなく css ではないでしょうか?

過去の記事へのコメントで申し訳ないです。

  • 2014/04/16(水) 22:12:07 |
  • URL |
  • funcHM #-
  • [ 編集 ]

Re: untitled

私はHTML関係に疎いので、MarginがHTMLなのかCSSなのかは分かりませんね…。
HTMLとCSSとJavaScriptは同じものということでいいじゃないかと思います(笑)

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/263-a0f2c95a
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。