Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WPF 4.6

Grabacr07
August 08, 2015

WPF 4.6

Visual Studio 2015 リリース記念勉強会で発表した資料です。
.NET Framework 4.6 で WPF に加えられた細かい修正点を紹介。ついでに、WPF 開発で使える Visual Studio 2015 の新機能を軽く紹介。

Grabacr07

August 08, 2015
Tweet

More Decks by Grabacr07

Other Decks in Technology

Transcript

  1. WPF 4.6 and Visual Studio 2015 2015/08/08 Japan CSharp User

    Group Visual Studio 2015 リリース記念勉強会 Manato KAMEYA (@Grabacr07)
  2. Self Introduction 亀谷学人 (かめやまなと) / 1987年生まれ / 仙台出身 / 東京在住

    Work 2010/04 - 2014/07 … 某メーカー系 SIer C# + WPF (Windows Client Application) 2014/09 - 現在 … 株式会社グラニ C# + Unity (Game app), C# + WPF (Tools)
  3. 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/
  4. Transparent Child Window support WPF で Child Window Win32 相互運用シナリオ

    MDI 的なもの (MDI は WPF 未サポート) WS_CHILDWINDOW 透過できなかった 親ウィンドウとは別のウィンドウ ハンドル (Win32 相互運用とかで必要になる)
  5. 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); これ
  6. Transparent Child Window support Application Manifest に追記 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application>

    <!–– アプリケーションが Windows 8 で動作するように設計うんぬんかんぬん --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" /> </application> </compatibility> 透過する Child Window WebBrowser 等より上に描画でき、 かつ透過できる貴重な存在
  7. High DPI Improvements .NET Framework 4.5.2 (またはそれ以下) の場合 app.config に

    AppContextSwitchOverrides を追記 .NET Framework 4.6 と同様の丸め動作へ <?xml version="1.0" encoding="utf-8"?> <configuration> <!-- 中略 --> <runtime> <AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false" /> </runtime> </configuration> これ (長い)
  8. 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
  9. New features Live VisualTree + Live Property Explorer ①実行中の アプリ上で

    要素を選択 ② Visual Tree 上での要素を 自動的に特定 ③選択要素の プロパティ値 実行中に変更
  10. 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 平井さんも…!