Slide 1

Slide 1 text

WPF 4.6 and Visual Studio 2015 2015/08/08 Japan CSharp User Group Visual Studio 2015 リリース記念勉強会 Manato KAMEYA (@Grabacr07)

Slide 2

Slide 2 text

Self Introduction 亀谷学人 (かめやまなと) / 1987年生まれ / 仙台出身 / 東京在住 Work 2010/04 - 2014/07 … 某メーカー系 SIer C# + WPF (Windows Client Application) 2014/09 - 現在 … 株式会社グラニ C# + Unity (Game app), C# + WPF (Tools)

Slide 3

Slide 3 text

Self Introduction 亀谷学人 (かめやまなと) / 1987年生まれ / 仙台出身 / 東京在住 Private Room metro Tokyo (めとべや東京勉強会) staff 提督業も忙しい! (KanColleViewer) 開発 Microsoft MVP for Visual C# (2014/04 - 2016/03) Twitter: @Grabacr07 Facebook: manato.kameya Blog: http://grabacr.net/

Slide 4

Slide 4 text

Transparent Child Window support WPF 4.6 (1)

Slide 5

Slide 5 text

Transparent Child Window support WPF で Child Window Win32 相互運用シナリオ MDI 的なもの (MDI は WPF 未サポート) WS_CHILDWINDOW 透過できなかった 親ウィンドウとは別のウィンドウ ハンドル (Win32 相互運用とかで必要になる)

Slide 6

Slide 6 text

Transparent Child Window support UsesPerPixelTransparency property HwndSourceParameters 構造体に追加 true を指定すると作成したウィンドウが透過 var windowParams = new HwndSourceParameters("ChildWindow") { ParentWindow = parentWindowHandle, WindowStyle = WS_CHILDWINDOW | WS_CLIPCHILDREN WS_VISIBLE, PositionX = 200, PositionY = 150, UsesPerPixelTransparency = true, }; var source = new HwndSource(windowParams); これ

Slide 7

Slide 7 text

Transparent Child Window support Application Manifest に追記 透過する Child Window WebBrowser 等より上に描画でき、 かつ透過できる貴重な存在

Slide 8

Slide 8 text

High DPI Improvements WPF 4.6 (2)

Slide 9

Slide 9 text

High DPI Improvements 例えば DPI 150 % 環境下において

Slide 10

Slide 10 text

High DPI Improvements 例えば DPI 150 % 環境下において 2 px 2 px 2 px 1 px

Slide 11

Slide 11 text

High DPI Improvements UseLayoutRounding property > MSDN から引用 https://msdn.microsoft.com/ja-jp/library/system.windows.frameworkelement.uselayoutrounding(v=vs.110).aspx レイアウト計算を丸めて、半透明エッジを排除する機能 DPI 150 % の場合 となるが… Round (1.0 px * 150 %) = 2.0 px 0.25px 0.25px 1.00 px 1.00 px 0.25px 0.25px Round (1.25) = 1 …?

Slide 12

Slide 12 text

High DPI Improvements .NET Framework 4.6 アプリの場合 境界線の丸めをうまく処理してくれるようになった UseLayoutRounding="true" 正しく 2 px で描画される コード修正必要なし

Slide 13

Slide 13 text

High DPI Improvements .NET Framework 4.5.2 (またはそれ以下) の場合 app.config に AppContextSwitchOverrides を追記 .NET Framework 4.6 と同様の丸め動作へ これ (長い)

Slide 14

Slide 14 text

DPI Scaling 150 % 環境における DPI スケーリング そもそも、Border が 2 px になるのは如何なものか Windows の VisualStyle は DPI 150 % でも Border は 1 px 1 px ではなく 0.99 と指定する となり、150 % 環境下でも Border = 1 px を再現可能 http://mntone.hateblo.jp/entry/2015/06/29/090728 Round (0.99 px * 150 %) = Round (1.485) = 1 px

Slide 15

Slide 15 text

の WPF で使える新機能とまとめ Visual Studio 2015

Slide 16

Slide 16 text

New features CodeLens XAML デザイナーでも CodeLens が出るように ファイル単位なので C# コードほどの利便性はないけど

Slide 17

Slide 17 text

New features Peek Definition XAML 上の要素を右クリック > 「定義をここに表示」 型、バインディング ソース、リソース、だいたい何でも XAML エディター内に 要素の定義コードが出る

Slide 18

Slide 18 text

New features Live VisualTree + Live Property Explorer ①実行中の アプリ上で 要素を選択 ② Visual Tree 上での要素を 自動的に特定 ③選択要素の プロパティ値 実行中に変更

Slide 19

Slide 19 text

Conclusion WPF in .NET Framework 4.6 透明な子ウィンドウがサポートされるようになった! High-DPI 環境でレイアウトの丸めがいい感じになった! タッチ サポートの改善 (バグ修正っぽい) Visual Studio 2015 + WPF Live VisualTree + Live Property Explorer is 最強

Slide 20

Slide 20 text

Room metro Tokyo めとべや東京勉強会 #9 2015/08/22 13:00 ~ 18:00 ・ GST 31F Room C+D (ここ!) https://roommetro.doorkeeper.jp/events/29220 Windows Phone スペシャル セッションはすべて Windows Phone 関連 MADOSMA を開発した MCJ 平井さんも…!