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

WPF 4.6

Avatar for Grabacr07 Grabacr07
August 08, 2015

WPF 4.6

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

Avatar for Grabacr07

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 平井さんも…!