SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
デスクトップがこの
先生きのこるには
2013/07/06 Room metro Tokyo #1
Manato KAMEYA (@Grabacr07)
アプリ
Subject
• まだまだデスクトップ、そして WPF アプリ
• DPI-aware application のために
(今回、ほとんど DPI 関係のお話になってしまいました)
• DPI についてちょっと深く知る的な
• Windows 8.1 Preview 新機能
• タッチ エクスペリエンス
Agenda
デスクトップ アプリがこの先
生きのこるには
Introduction
Touch Experience
Windows DPI
Conclusion
デスクトップ アプリがこの先
生きのこるには
• 内容は個人に帰属します
所属する組織を代表するものではありません
• Windows 8.1 Preview
• プレビュー版に関する話題が含まれます
• 正式リリース時には変更される可能性があります
Introduction
Self Introduction
• 亀谷 学人 (かめやまなと)
• 某メーカー系 SIer 勤務
• C# + WPF
Windows Client Application 開発
• Twitter: ぐらばく (@Grabacr07)
• Blog: http://grabacr.net/
最近目が死んでる
Interactive Whiteboard
• コンピューター ディスプレイ
• 大型 (40 型 ~ 80 型)
プラズマディスプレイ、プロジェクター、etc…
• ペンや指による入力
デジタル感圧式、赤外線、影、超音波、etc…
• 対応ソフトウェア開発
for the Tablet PC…?
• Windows 8 と様々なタブレット PC の登場
例のソフトウェア、
Windows 8 でも動くよね?
既に動作確認は取れております
タブレット PC で表示が狂う件
大変申し訳ございません早急に
調査し対応致しますので今暫く
お待ち頂きますよう宜しくお願
for the Tablet PC…?
• Windows 8 と様々なタブレット PC の登場
例のアプリ、
Windows 8 でも動くよね?
既に動作確認は取れております
タブレット PC で表示が狂う件
大変申し訳ございません早急に
調査し対応致しますので今暫く
お待ち頂きますよう宜しくお願
高 DPI 環境で表示不良
for the Tablet PC…?
• Windows 8 と様々なタブレット PC の登場
• ディスプレイの小型化 + 高精細化
TABLET / PC SIZE RESOLUTION PPI
Acer ICONIA W3 8.1 inch
174 mm x 109 mm
WXGA (1280 x 800)
186 ppi
0.136 mm
Acer ICONIA W7 11.6 inch
257 mm x 146 mm
Full-HD (1920 x 1080)
190 ppi
0.134 mm
Surface Pro 10.6 inch
235 mm x 132 mm
Full-HD (1920 x 1080)
208 ppi
0.122 mm
MacBook Pro (Retina)
13.3 inch
287 mm x 179 mm
WQXGA (2560 x 1600)
227 ppi
0.112 mm
高 DPI 環境の標準化
物理的な
1 ドット
サイズ
新旧 DPI システム解説
Windows DPI
What is DPI?
• 今更ですが…
• Dots Per Inch
• 1 インチの幅でどれだけのドットを表現できるか
• Windows では 1 インチ = 96 pixel
• 100 % (96 dpi)、125 % (120 dpi)、150 % (144 dpi) などの設定
[コントロール パネル] -> [デスクトップのカスタマイズ] -> [テキストやその他の項目の大きさの変更]
96 dpi
100 x 50 px
144 dpi
150 x 75 px
96 dpi
100 x 50 px
144 dpi
150 x 75 px
DPI Settings (Windows 8)
96 DPI (100 %)
1920 x 1080
120 DPI (125 %)
1536 x 864
144 DPI (150 %)
1280 x 720
DPI of the major Tablet PCs
• 既定の DPI 設定
• デバイスによって異なる
• ArrowsTab 100 %
• VAIO Pro 11 125 %
• VAIO Pro 13 125 %
• ICONIA W7 150 %
• Surface RT 100 %
• Surface Pro 150 %
DPI of the major Tablet PCs
• 適切な設定とは? (まぁ好みなんですが)
• ppi (画素密度) – 30 ~ 40 くらいに近いと見やすい?
TABLET / PC SIZE RESOLUTION
(NATIVE)
PPI FITTING DPI RESOLUTION
(LOGICAL)
Surface RT 10.6” 1366 x 768 148 ppi 96 dpi (100 %) 1366 x 768
VAIO Pro 13 13.6” 1920 x 1080 166 ppi 128 dpi (125 %) 1536 x 864
ICONIA W7 11.6” 1920 x 1080 190 ppi 144 dpi (150 %) 1280 x 720
Surface Pro 10.6” 1920 x 1080 208 ppi 144 dpi (150 %) 1280 x 720
MacBook Pro
(Retina)
13.3” 2560 x 1600 227 ppi 192 dpi (200 %) 1280 x 800
DPI of the major Tablet PCs
• 適切な設定とは? (まぁ好みなんですが)
• ppi (画素密度) – 30 ~ 40 くらいに近いと見やすい?
TABLET / PC SIZE RESOLUTION
(NATIVE)
PPI FITTING DPI RESOLUTION
(LOGICAL)
Surface RT 10.6” 1366 x 768 148 ppi 96 dpi (100 %) 1366 x 768
VAIO Pro 13 13.6” 1920 x 1080 166 ppi 128 dpi (125 %) 1536 x 864
ICONIA W7 11.6” 1920 x 1080 190 ppi 144 dpi (150 %) 1280 x 720
Surface Pro 10.6” 1920 x 1080 208 ppi 144 dpi (150 %) 1280 x 720
MacBook Pro
(Retina)
13.3” 2560 x 1600 227 ppi 192 dpi (200 %) 1280 x 800
Q. どうして 200 % 設定が適正でないの? A. Windows 8 で使うには小さすぎるから
Surface Pro 10.6” 1920 x 1080 208 ppi 192 dpi (200 %) 960 x 540
Windows Store apps
• スケーリングの UX ガイドライン
• 100 % -> 通常
• 140 % -> 174 ppi 以上、Full-HD (1920 x 1080) デバイスで自動的に
• 180 % -> 240 ppi 以上、WQHD (2560 x 1440) デバイスで自動的に
TABLET / PC SIZE RESOLUTION PPI SCALING
ICONIA W7 11.6” 1920 x 1080 190 ppi 140 % ?
Surface Pro 10.6” 1920 x 1080 208 ppi 140 % ?
High DPI Issues
• UI 要素やテキストが切れる
• フォント サイズ / レイアウトが不適切になる
• UI 要素がぼやける
• 座標空間の位置調整が不適切で、入力に影響する
狙った場所にドラッグ&ドロップできなくなったり
• 全画面表示のアプリケーションが部分的にしかレンダリングされない
全画面表示のゲームなどで見られる
• etc...
DPI-unaware application
• 文字が切れる、レイアウトが崩れる、etc…
(悪意のある例ですが) 本当に何も対策しないとこうなる
96 dpi 環境 (100 %) 120 dpi 環境 (125 %) 144 dpi 環境 (150 %)
DPI-aware application
• Win32 application
• マニフェストで
<dpiAware>True</dpiAware> 宣言
• GetDeviceCaps 関数
GetSystemMetrics 関数
SystemParametersInfo 関数
• Windows Forms application
• AutoScaleMode プロパティを Dpi に
• 開発環境の DPI を記憶
DPI-aware application
96 dpi 環境 (100 %)
144 dpi 環境 (150 %)• DPI を考慮すると
スケーリングされて意図した外観に
スケーリングされて
サイズが変わってる
DPI Virtualization and Scaling
• DPI 仮想化機能
• DPI-unaware applications のための救済措置
• Windows Vista で導入
• DPI 設定に合わせて自動的に拡大
96 dpi で画面表示領域外にレンダリングされ、
DWM が拡大して表示
• ぼやける (重要)
このチェックを
外した状態
DPI Virtualization and Scaling
• ぼやける
ただ拡大しているだけなので…
96 dpi 環境 (100 %)
144 dpi 環境 (150 %)
拡大しただけなので
サイズは変わってない
Device Independent Pixel
• DIP (デバイス非依存ピクセル)
• Direct2D, WPF など
• 環境の DPI 設定に関わらず 1 dip = 1/96 inch とする
• コントロールやフォントのサイズは全て DIP で指定する
開発者が DPI を意識して座標やサイズの計算をする必要がない!
• DPI 仮想化が効かない (仮想化する必要がない)
• WPF ->「解像度およびデバイスに依存しないグラフィックス」
Device Independent Pixel
• ぼやけない
そのための特別なコードも必要なし
96 dpi 環境 (100 %)
144 dpi 環境 (150 % のサイズで描画)
DIP なので
サイズ変わってない
High DPI in WPF
• WPF で DPI を意識するケース(1)
• P/Invoke -> Win32 API … WPF の外から座標を取得してくる場合など
• DIP (デバイス非依存ピクセル) でないものは計算が必要
WPF で DPI 算出
var source = PresentationSource.FromVisual(this);
if (source != null && source.CompositionTarget != null)
{
var dpiX = 96.0 * source.CompositionTarget.TransformToDevice.M11;
var dpiY = 96.0 * source.CompositionTarget.TransformToDevice.M22;
}
1.25 とか
1.5 とか
High DPI in WPF
• WPF で DPI を意識するケース(2)
• ラスター画像がぼやける (もしくはジャギる)
• ベクター画像を用意する?
• DPI ごとに異なる画像を用意する?
• Windows Store apps では有効な手段
96 dpi
100%
144 dpi
150%
¥scale-100¥test.jpg
¥scale-140¥test.jpg
¥scale-180¥test.jpg
¥scale-100¥test.jpg
¥scale-140¥test.jpg
¥scale-180¥test.jpg
High DPI in WPF
• Path を使え、Path を。
96 dpi
(100 %)
144 dpi
(150 %)
http://grabacr.net/archives/795
Demo
XAML で描いたクラウディアさん
ベクター形式なので DPI 対応 (拡大してもぼやけない)
DPI Settings (Windows 8)
DPI Settings (Windows 8.1 Preview)
モニターごとの
スケーリング
(新機能)
DPI Settings (Windows 8.1 Preview)
従来方式も可能
Per-Monitor DPI
• モニターごとにスケーリング
Primary: 10.6” Tablet (1920 x 1080) Secondary: 24” Display (1920 x 1200)
144 dpi (150 %) 96 dpi (100 %)
Demo
Per-Monitor DPI
Primary: 10.6” Tablet (1920 x 1080) Secondary: 24” Display (1920 x 1200)
144 dpi (150 %) 96 dpi (100 %)
Demo
• モニターごとにスケーリング
• ログオン時にそれぞれのモニターに最適な DPI を選択
• ウィンドウがモニター間を移動したときスケーリング
• Dynamic scaling
• アプリ側で、動的な DPI スケーリングに対応する必要がある!
• 非対応アプリは、DPI 仮想化によってスケーリングされる
現状、explorer.exe や WPF アプリも DPI 仮想化されてしまう (まぁ、Preview 版ですし)
Optimal Configuration
Display size Resolution (pixels) Panel PPI OS DPI Scale level
10.6” Full-HD 1920 x 1080 208 144 150%
10.6” HD 1366 x 768 148 96 100%
11.6” WUXGA 1920 x 1200 195 144 150%
11.6” HD 1366 x 768 135 96 100%
13.3” WUXGA 1920 x 1200 170 144 150%
13.3” QHD 2560 x 1440 221 192 200%
13.3” HD 1366 x 768 118 96 100%
15.4” Full-HD 1920 x 1080 143 120 125%
17” Full-HD 1920 x 1080 130 120 125%
23” QFHD (4K) 3840 x 2160 192 192 200%
24” QHD 2560 x 1440 122 120 125%
DPI Awareness Level
• DPI-unaware applications
• 高 DPI 環境非対応、スケーリングなし
• 一応 DPI 仮想化は効くけど、品質はお察しレベル
• System DPI-aware applications
• スケーリングされるので、高 DPI 環境でも表示できる
• Windows 8.1 Preview で異なる DPI のディスプレイに移動すると仮想化されてしまう
• Per-Monitor DPI-aware ← New!
• Windows 8 までの環境で、高 DPI 環境でも表示できる
• Windows 8.1 Preview で異なる DPI のディスプレイに移動しても表示できる
Per-Monitor DPI-aware
• 現時点でカスタム Win32 アプリのみ対応可能?
• マニフェストで Per-Monitor DPI に対応してることを宣言
<dpiAware>Per-Monitor</dpiAware> または <dpiAware>True/PM</dpiAware>
• 自分が描画されているモニターの DPI を調べる
• WM_DPICHANGED メッセージを処理
• DPI に合わせてスケーリングし再描画
• Windows 標準アプリ (explorer, mspaint, etc…) 非対応?
• WPF アプリ非対応?
デスクトップでもタッチしたい!
Touch Experience
Touch Experience
• デスクトップ アプリで意識すべきなのは?
• コントロールの大きさ
指 (爪でなく) でタッチできるサイズになっている?
• MouseEnter, MosuseMove に頼った動き
マウスを乗せてメニューを表示させたり、Tooltip に頼ったりしてない?
例えば、NumericUpDown コントロール
上下ボタンは既定で 16 x 8 pixel、指で押せるわけがない
Surface Pro + 144 dpi で
物理サイズ約 3 x 1.5 mm
Hoge ボタン
処理 XXX_YYY を実行します
?
マウスを乗せると
Tooltip でヘルプが出たり
UX Guidelines
• Windows User Experience Interaction Guidelines
http://msdn.microsoft.com/ja-JP/windows/desktop/aa511258
› すべての Windows デスクトップ アプリ向けに、高品質で一貫性のある UX および UI の基準を確立する。
› UX と UI に関する一般的な質問を予想し、一般的な使用パターンについてガイダンスを提供する。
› Windows で快適に使うことができる、機能的で美しいデスクトップ アプリの開発を支援する。
• 読んだことあります?
• 900 ページ弱の PDF ファイルがあります!
簡易版もあるよ -> http://msdn.microsoft.com/ja-jp/windows/ee340680.aspx
• Windows 7 の頃に作られたもの (だけど、Windows 8 でも使えるよね…?)
UX Guidelines
• Interaction -> Touch Experience
http://msdn.microsoft.com/ja-jp/library/windows/desktop/cc872774.aspx
• コントロールの大きさ
タッチできる最小サイズ -> 物理サイズ 6 x 6 mm
速度や正確さが向上 / 快適に感じる -> 物理サイズ 10 x 10 mm
• コントロールのレイアウト、感覚など
ICONIA W7 (11.6”) + 120 dpi で 60 ピクセル前後
ちょうど、リボンの大きいボタンと同じくらい
Office 2013
• マウス モード
• 従来と同じ
• 指で押しづらい
• タッチ モード
• タッチ向け
• 余白が広い
= 指で押しやすい
Office 2013
タッチ操作で
メニューを出した場合
マウス操作で
メニューを出した場合
Conclusion
DPI-aware application
• 高精細モニター搭載デバイスが主流に
• 主力タブレット PC 製品は軒並み 160 ~ 200 ppi
• 既定の DPI は 120 ~ 144 dpi、もしくはそれ以上が主流に
• DPI-aware application はむしろ「当然」の域に
• DPI 仮想化機能
• あくまで非対応アプリへの救済措置
• WPF を使いましょう (デバイス非依存ピクセル)
Per-Monitor DPI
• Windows 8.1 Preview 新機能
• モニターごとに適切な DPI を自動設定
• ウィンドウがモニター間を移動すると自動的にスケーリング
• Per-Monitor DPI-aware
• モニター間移動でスケーリングするにはアプリ側で対応が必要
• 現状、WPF などは対応できない? (正式版に期待)
Touch Experience
• デスクトップで意識すべき点
• コントロールの大きさが十分か
• マウス固有の動きに依存していないか
• UX Guidelines 読もう
• タッチ対応を含め、デスクトップ アプリの開発を支援
• Office などの UI を例にしてみてもよいかも
Reference
• DPI and Device-Independent Pixels
http://msdn.microsoft.com/en-us/library/windows/desktop/ff684173(v=vs.85).aspx
• Guidelines for scaling to pixel density (Windows Store apps)
http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx
• Writing DPI-Aware Desktop Applications in Windows 8.1 Preview
http://go.microsoft.com/fwlink/p/?LinkID=307061
• DPI Tutorial sample
http://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744/description
Reference
• Getting system DPI in WPF app.. - MSDN Blogs
http://blogs.msdn.com/b/jaimer/archive/2007/03/07/getting-system-dpi-in-wpf-app.aspx
• Scaling to different screens - Building Windows 8 - MSDN Blogs
http://blogs.msdn.com/b/b8/archive/2012/03/21/scaling-to-different-screens.aspx
• Windows User Experience Interaction Guidelines
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511258.aspx

Contenu connexe

Tendances

メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
demuyan
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
Takao Oyobe
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
Find Job Startup
 

Tendances (20)

Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目
 
もうすぐ来る新しい DirectQuery の自動更新をいま可能なモノで模倣してみた!~ 誕生日のパラドックスを使って体験するのだ ~
もうすぐ来る新しい DirectQuery の自動更新をいま可能なモノで模倣してみた!~ 誕生日のパラドックスを使って体験するのだ ~もうすぐ来る新しい DirectQuery の自動更新をいま可能なモノで模倣してみた!~ 誕生日のパラドックスを使って体験するのだ ~
もうすぐ来る新しい DirectQuery の自動更新をいま可能なモノで模倣してみた!~ 誕生日のパラドックスを使って体験するのだ ~
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へチケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
 
Unicode文字列処理
Unicode文字列処理Unicode文字列処理
Unicode文字列処理
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
TurtleBot3でROSを始めよう
TurtleBot3でROSを始めようTurtleBot3でROSを始めよう
TurtleBot3でROSを始めよう
 
プログラムを自動生成する技術 ~ Programming by Example ~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
プログラムを自動生成する技術 ~ Programming by Example ~(NTTデータ テクノロジーカンファレンス 2020 発表資料)プログラムを自動生成する技術 ~ Programming by Example ~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
プログラムを自動生成する技術 ~ Programming by Example ~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
PostgreSQLからのデータ連携/同期も完全対応!DBを『活かす』なら、Syniti DR 9.7!
PostgreSQLからのデータ連携/同期も完全対応!DBを『活かす』なら、Syniti DR 9.7!PostgreSQLからのデータ連携/同期も完全対応!DBを『活かす』なら、Syniti DR 9.7!
PostgreSQLからのデータ連携/同期も完全対応!DBを『活かす』なら、Syniti DR 9.7!
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
証明プログラミング超入門
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
 
Azure Media Services 大全
Azure Media Services 大全Azure Media Services 大全
Azure Media Services 大全
 
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
【企画書】gamba!(ガンバ):サムライインキュベート様向け_企画プレゼン資料
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
オープンソースのAPIゲートウェイ Kong ご紹介
オープンソースのAPIゲートウェイ Kong ご紹介 オープンソースのAPIゲートウェイ Kong ご紹介
オープンソースのAPIゲートウェイ Kong ご紹介
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 

En vedette

半透明は飾りです 偉い人にはそれがわからんのですよ
半透明は飾りです偉い人にはそれがわからんのですよ半透明は飾りです偉い人にはそれがわからんのですよ
半透明は飾りです 偉い人にはそれがわからんのですよ
Yuya Yamaki
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
Takuya Akiba
 

En vedette (13)

デスクトップ アプリがこの先生きのこるには (2)
デスクトップ アプリがこの先生きのこるには (2)デスクトップ アプリがこの先生きのこるには (2)
デスクトップ アプリがこの先生きのこるには (2)
 
デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革
デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革
デスクトップアプリ開発者が押さえておくべきWindows 8 時代の変革
 
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
 
Windows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocppWindows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocpp
 
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
 
メトロスタイルってなに?
メトロスタイルってなに?メトロスタイルってなに?
メトロスタイルってなに?
 
半透明は飾りです 偉い人にはそれがわからんのですよ
半透明は飾りです偉い人にはそれがわからんのですよ半透明は飾りです偉い人にはそれがわからんのですよ
半透明は飾りです 偉い人にはそれがわからんのですよ
 
Windows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようWindows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみよう
 
チームでつくるUIデザイン
チームでつくるUIデザインチームでつくるUIデザイン
チームでつくるUIデザイン
 
カヤックHTMLファイ部のUI・UX (第57回 HTML5とか勉強会 / 2015.5.19)
カヤックHTMLファイ部のUI・UX (第57回 HTML5とか勉強会 / 2015.5.19)カヤックHTMLファイ部のUI・UX (第57回 HTML5とか勉強会 / 2015.5.19)
カヤックHTMLファイ部のUI・UX (第57回 HTML5とか勉強会 / 2015.5.19)
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
 
0から始めるUXデザイン(UXデザインの組織を作る)
0から始めるUXデザイン(UXデザインの組織を作る)0から始めるUXデザイン(UXデザインの組織を作る)
0から始めるUXデザイン(UXデザインの組織を作る)
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
 

Similaire à デスクトップ アプリがこの先生きのこるには

AndroidのUI設計で押さえておきたいポイント
AndroidのUI設計で押さえておきたいポイントAndroidのUI設計で押さえておきたいポイント
AndroidのUI設計で押さえておきたいポイント
Takayuki Inoue
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
Kunimasa Noda
 
IgRemoteについて
IgRemoteについてIgRemoteについて
IgRemoteについて
Kelly Holonic
 
iosアプリのPaintcode利用
iosアプリのPaintcode利用iosアプリのPaintcode利用
iosアプリのPaintcode利用
Rika Kurano
 
Jaws days2014 app stream動画なし
Jaws days2014 app stream動画なしJaws days2014 app stream動画なし
Jaws days2014 app stream動画なし
義隆 川路
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
 
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
Mori Keita
 
マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化
eiji sekiya
 

Similaire à デスクトップ アプリがこの先生きのこるには (20)

マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向
 
Developers Summit 2013【14-E-3】Windows 8デザインガイド
Developers Summit 2013【14-E-3】Windows 8デザインガイドDevelopers Summit 2013【14-E-3】Windows 8デザインガイド
Developers Summit 2013【14-E-3】Windows 8デザインガイド
 
Androidアプリ製作で気をつけたいこと
Androidアプリ製作で気をつけたいことAndroidアプリ製作で気をつけたいこと
Androidアプリ製作で気をつけたいこと
 
AndroidのUI設計で押さえておきたいポイント
AndroidのUI設計で押さえておきたいポイントAndroidのUI設計で押さえておきたいポイント
AndroidのUI設計で押さえておきたいポイント
 
リモート・スマホ・レンタル
リモート・スマホ・レンタルリモート・スマホ・レンタル
リモート・スマホ・レンタル
 
DeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきたDeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきた
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
 
IgRemoteについて
IgRemoteについてIgRemoteについて
IgRemoteについて
 
Ubuntu Tokyo Meeting 9.08
Ubuntu Tokyo Meeting 9.08Ubuntu Tokyo Meeting 9.08
Ubuntu Tokyo Meeting 9.08
 
iosアプリのPaintcode利用
iosアプリのPaintcode利用iosアプリのPaintcode利用
iosアプリのPaintcode利用
 
UX on HTML5 x Touch UI
UX on HTML5 x Touch UIUX on HTML5 x Touch UI
UX on HTML5 x Touch UI
 
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
Jaws days2014 app stream動画なし
Jaws days2014 app stream動画なしJaws days2014 app stream動画なし
Jaws days2014 app stream動画なし
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメタブレット PC をさらに活用する ペン入力とデジタルインクのススメ
タブレット PC をさらに活用する ペン入力とデジタルインクのススメ
 
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
ABC2013 Spring デザインナーとエンジニアの連携プレイのコツ
 
ガイドラインからみたアプリUI〜iPhone用とAndroid用〜
ガイドラインからみたアプリUI〜iPhone用とAndroid用〜ガイドラインからみたアプリUI〜iPhone用とAndroid用〜
ガイドラインからみたアプリUI〜iPhone用とAndroid用〜
 
Google Developers Summit Android TV で実現するリビングルームでのアプリ体験
Google Developers Summit   Android TV で実現するリビングルームでのアプリ体験Google Developers Summit   Android TV で実現するリビングルームでのアプリ体験
Google Developers Summit Android TV で実現するリビングルームでのアプリ体験
 
マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化マークアップ講座 03 スマートフォン・デバイス最適化
マークアップ講座 03 スマートフォン・デバイス最適化
 
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
 

デスクトップ アプリがこの先生きのこるには

  • 2. Subject • まだまだデスクトップ、そして WPF アプリ • DPI-aware application のために (今回、ほとんど DPI 関係のお話になってしまいました) • DPI についてちょっと深く知る的な • Windows 8.1 Preview 新機能 • タッチ エクスペリエンス
  • 3. Agenda デスクトップ アプリがこの先 生きのこるには Introduction Touch Experience Windows DPI Conclusion デスクトップ アプリがこの先 生きのこるには
  • 4. • 内容は個人に帰属します 所属する組織を代表するものではありません • Windows 8.1 Preview • プレビュー版に関する話題が含まれます • 正式リリース時には変更される可能性があります
  • 6. Self Introduction • 亀谷 学人 (かめやまなと) • 某メーカー系 SIer 勤務 • C# + WPF Windows Client Application 開発 • Twitter: ぐらばく (@Grabacr07) • Blog: http://grabacr.net/ 最近目が死んでる
  • 7. Interactive Whiteboard • コンピューター ディスプレイ • 大型 (40 型 ~ 80 型) プラズマディスプレイ、プロジェクター、etc… • ペンや指による入力 デジタル感圧式、赤外線、影、超音波、etc… • 対応ソフトウェア開発
  • 8. for the Tablet PC…? • Windows 8 と様々なタブレット PC の登場 例のソフトウェア、 Windows 8 でも動くよね? 既に動作確認は取れております タブレット PC で表示が狂う件 大変申し訳ございません早急に 調査し対応致しますので今暫く お待ち頂きますよう宜しくお願
  • 9. for the Tablet PC…? • Windows 8 と様々なタブレット PC の登場 例のアプリ、 Windows 8 でも動くよね? 既に動作確認は取れております タブレット PC で表示が狂う件 大変申し訳ございません早急に 調査し対応致しますので今暫く お待ち頂きますよう宜しくお願 高 DPI 環境で表示不良
  • 10. for the Tablet PC…? • Windows 8 と様々なタブレット PC の登場 • ディスプレイの小型化 + 高精細化 TABLET / PC SIZE RESOLUTION PPI Acer ICONIA W3 8.1 inch 174 mm x 109 mm WXGA (1280 x 800) 186 ppi 0.136 mm Acer ICONIA W7 11.6 inch 257 mm x 146 mm Full-HD (1920 x 1080) 190 ppi 0.134 mm Surface Pro 10.6 inch 235 mm x 132 mm Full-HD (1920 x 1080) 208 ppi 0.122 mm MacBook Pro (Retina) 13.3 inch 287 mm x 179 mm WQXGA (2560 x 1600) 227 ppi 0.112 mm 高 DPI 環境の標準化 物理的な 1 ドット サイズ
  • 12. What is DPI? • 今更ですが… • Dots Per Inch • 1 インチの幅でどれだけのドットを表現できるか • Windows では 1 インチ = 96 pixel • 100 % (96 dpi)、125 % (120 dpi)、150 % (144 dpi) などの設定 [コントロール パネル] -> [デスクトップのカスタマイズ] -> [テキストやその他の項目の大きさの変更] 96 dpi 100 x 50 px 144 dpi 150 x 75 px 96 dpi 100 x 50 px 144 dpi 150 x 75 px
  • 14. 96 DPI (100 %) 1920 x 1080
  • 15. 120 DPI (125 %) 1536 x 864
  • 16. 144 DPI (150 %) 1280 x 720
  • 17. DPI of the major Tablet PCs • 既定の DPI 設定 • デバイスによって異なる • ArrowsTab 100 % • VAIO Pro 11 125 % • VAIO Pro 13 125 % • ICONIA W7 150 % • Surface RT 100 % • Surface Pro 150 %
  • 18. DPI of the major Tablet PCs • 適切な設定とは? (まぁ好みなんですが) • ppi (画素密度) – 30 ~ 40 くらいに近いと見やすい? TABLET / PC SIZE RESOLUTION (NATIVE) PPI FITTING DPI RESOLUTION (LOGICAL) Surface RT 10.6” 1366 x 768 148 ppi 96 dpi (100 %) 1366 x 768 VAIO Pro 13 13.6” 1920 x 1080 166 ppi 128 dpi (125 %) 1536 x 864 ICONIA W7 11.6” 1920 x 1080 190 ppi 144 dpi (150 %) 1280 x 720 Surface Pro 10.6” 1920 x 1080 208 ppi 144 dpi (150 %) 1280 x 720 MacBook Pro (Retina) 13.3” 2560 x 1600 227 ppi 192 dpi (200 %) 1280 x 800
  • 19. DPI of the major Tablet PCs • 適切な設定とは? (まぁ好みなんですが) • ppi (画素密度) – 30 ~ 40 くらいに近いと見やすい? TABLET / PC SIZE RESOLUTION (NATIVE) PPI FITTING DPI RESOLUTION (LOGICAL) Surface RT 10.6” 1366 x 768 148 ppi 96 dpi (100 %) 1366 x 768 VAIO Pro 13 13.6” 1920 x 1080 166 ppi 128 dpi (125 %) 1536 x 864 ICONIA W7 11.6” 1920 x 1080 190 ppi 144 dpi (150 %) 1280 x 720 Surface Pro 10.6” 1920 x 1080 208 ppi 144 dpi (150 %) 1280 x 720 MacBook Pro (Retina) 13.3” 2560 x 1600 227 ppi 192 dpi (200 %) 1280 x 800 Q. どうして 200 % 設定が適正でないの? A. Windows 8 で使うには小さすぎるから Surface Pro 10.6” 1920 x 1080 208 ppi 192 dpi (200 %) 960 x 540
  • 20. Windows Store apps • スケーリングの UX ガイドライン • 100 % -> 通常 • 140 % -> 174 ppi 以上、Full-HD (1920 x 1080) デバイスで自動的に • 180 % -> 240 ppi 以上、WQHD (2560 x 1440) デバイスで自動的に TABLET / PC SIZE RESOLUTION PPI SCALING ICONIA W7 11.6” 1920 x 1080 190 ppi 140 % ? Surface Pro 10.6” 1920 x 1080 208 ppi 140 % ?
  • 21. High DPI Issues • UI 要素やテキストが切れる • フォント サイズ / レイアウトが不適切になる • UI 要素がぼやける • 座標空間の位置調整が不適切で、入力に影響する 狙った場所にドラッグ&ドロップできなくなったり • 全画面表示のアプリケーションが部分的にしかレンダリングされない 全画面表示のゲームなどで見られる • etc...
  • 22. DPI-unaware application • 文字が切れる、レイアウトが崩れる、etc… (悪意のある例ですが) 本当に何も対策しないとこうなる 96 dpi 環境 (100 %) 120 dpi 環境 (125 %) 144 dpi 環境 (150 %)
  • 23. DPI-aware application • Win32 application • マニフェストで <dpiAware>True</dpiAware> 宣言 • GetDeviceCaps 関数 GetSystemMetrics 関数 SystemParametersInfo 関数 • Windows Forms application • AutoScaleMode プロパティを Dpi に • 開発環境の DPI を記憶
  • 24. DPI-aware application 96 dpi 環境 (100 %) 144 dpi 環境 (150 %)• DPI を考慮すると スケーリングされて意図した外観に スケーリングされて サイズが変わってる
  • 25. DPI Virtualization and Scaling • DPI 仮想化機能 • DPI-unaware applications のための救済措置 • Windows Vista で導入 • DPI 設定に合わせて自動的に拡大 96 dpi で画面表示領域外にレンダリングされ、 DWM が拡大して表示 • ぼやける (重要) このチェックを 外した状態
  • 26. DPI Virtualization and Scaling • ぼやける ただ拡大しているだけなので… 96 dpi 環境 (100 %) 144 dpi 環境 (150 %) 拡大しただけなので サイズは変わってない
  • 27. Device Independent Pixel • DIP (デバイス非依存ピクセル) • Direct2D, WPF など • 環境の DPI 設定に関わらず 1 dip = 1/96 inch とする • コントロールやフォントのサイズは全て DIP で指定する 開発者が DPI を意識して座標やサイズの計算をする必要がない! • DPI 仮想化が効かない (仮想化する必要がない) • WPF ->「解像度およびデバイスに依存しないグラフィックス」
  • 28. Device Independent Pixel • ぼやけない そのための特別なコードも必要なし 96 dpi 環境 (100 %) 144 dpi 環境 (150 % のサイズで描画) DIP なので サイズ変わってない
  • 29. High DPI in WPF • WPF で DPI を意識するケース(1) • P/Invoke -> Win32 API … WPF の外から座標を取得してくる場合など • DIP (デバイス非依存ピクセル) でないものは計算が必要 WPF で DPI 算出 var source = PresentationSource.FromVisual(this); if (source != null && source.CompositionTarget != null) { var dpiX = 96.0 * source.CompositionTarget.TransformToDevice.M11; var dpiY = 96.0 * source.CompositionTarget.TransformToDevice.M22; } 1.25 とか 1.5 とか
  • 30. High DPI in WPF • WPF で DPI を意識するケース(2) • ラスター画像がぼやける (もしくはジャギる) • ベクター画像を用意する? • DPI ごとに異なる画像を用意する? • Windows Store apps では有効な手段 96 dpi 100% 144 dpi 150% ¥scale-100¥test.jpg ¥scale-140¥test.jpg ¥scale-180¥test.jpg ¥scale-100¥test.jpg ¥scale-140¥test.jpg ¥scale-180¥test.jpg
  • 31. High DPI in WPF • Path を使え、Path を。 96 dpi (100 %) 144 dpi (150 %) http://grabacr.net/archives/795 Demo XAML で描いたクラウディアさん ベクター形式なので DPI 対応 (拡大してもぼやけない)
  • 33. DPI Settings (Windows 8.1 Preview) モニターごとの スケーリング (新機能)
  • 34. DPI Settings (Windows 8.1 Preview) 従来方式も可能
  • 35. Per-Monitor DPI • モニターごとにスケーリング Primary: 10.6” Tablet (1920 x 1080) Secondary: 24” Display (1920 x 1200) 144 dpi (150 %) 96 dpi (100 %) Demo
  • 36. Per-Monitor DPI Primary: 10.6” Tablet (1920 x 1080) Secondary: 24” Display (1920 x 1200) 144 dpi (150 %) 96 dpi (100 %) Demo • モニターごとにスケーリング • ログオン時にそれぞれのモニターに最適な DPI を選択 • ウィンドウがモニター間を移動したときスケーリング • Dynamic scaling • アプリ側で、動的な DPI スケーリングに対応する必要がある! • 非対応アプリは、DPI 仮想化によってスケーリングされる 現状、explorer.exe や WPF アプリも DPI 仮想化されてしまう (まぁ、Preview 版ですし)
  • 37. Optimal Configuration Display size Resolution (pixels) Panel PPI OS DPI Scale level 10.6” Full-HD 1920 x 1080 208 144 150% 10.6” HD 1366 x 768 148 96 100% 11.6” WUXGA 1920 x 1200 195 144 150% 11.6” HD 1366 x 768 135 96 100% 13.3” WUXGA 1920 x 1200 170 144 150% 13.3” QHD 2560 x 1440 221 192 200% 13.3” HD 1366 x 768 118 96 100% 15.4” Full-HD 1920 x 1080 143 120 125% 17” Full-HD 1920 x 1080 130 120 125% 23” QFHD (4K) 3840 x 2160 192 192 200% 24” QHD 2560 x 1440 122 120 125%
  • 38. DPI Awareness Level • DPI-unaware applications • 高 DPI 環境非対応、スケーリングなし • 一応 DPI 仮想化は効くけど、品質はお察しレベル • System DPI-aware applications • スケーリングされるので、高 DPI 環境でも表示できる • Windows 8.1 Preview で異なる DPI のディスプレイに移動すると仮想化されてしまう • Per-Monitor DPI-aware ← New! • Windows 8 までの環境で、高 DPI 環境でも表示できる • Windows 8.1 Preview で異なる DPI のディスプレイに移動しても表示できる
  • 39. Per-Monitor DPI-aware • 現時点でカスタム Win32 アプリのみ対応可能? • マニフェストで Per-Monitor DPI に対応してることを宣言 <dpiAware>Per-Monitor</dpiAware> または <dpiAware>True/PM</dpiAware> • 自分が描画されているモニターの DPI を調べる • WM_DPICHANGED メッセージを処理 • DPI に合わせてスケーリングし再描画 • Windows 標準アプリ (explorer, mspaint, etc…) 非対応? • WPF アプリ非対応?
  • 41. Touch Experience • デスクトップ アプリで意識すべきなのは? • コントロールの大きさ 指 (爪でなく) でタッチできるサイズになっている? • MouseEnter, MosuseMove に頼った動き マウスを乗せてメニューを表示させたり、Tooltip に頼ったりしてない? 例えば、NumericUpDown コントロール 上下ボタンは既定で 16 x 8 pixel、指で押せるわけがない Surface Pro + 144 dpi で 物理サイズ約 3 x 1.5 mm Hoge ボタン 処理 XXX_YYY を実行します ? マウスを乗せると Tooltip でヘルプが出たり
  • 42. UX Guidelines • Windows User Experience Interaction Guidelines http://msdn.microsoft.com/ja-JP/windows/desktop/aa511258 › すべての Windows デスクトップ アプリ向けに、高品質で一貫性のある UX および UI の基準を確立する。 › UX と UI に関する一般的な質問を予想し、一般的な使用パターンについてガイダンスを提供する。 › Windows で快適に使うことができる、機能的で美しいデスクトップ アプリの開発を支援する。 • 読んだことあります? • 900 ページ弱の PDF ファイルがあります! 簡易版もあるよ -> http://msdn.microsoft.com/ja-jp/windows/ee340680.aspx • Windows 7 の頃に作られたもの (だけど、Windows 8 でも使えるよね…?)
  • 43. UX Guidelines • Interaction -> Touch Experience http://msdn.microsoft.com/ja-jp/library/windows/desktop/cc872774.aspx • コントロールの大きさ タッチできる最小サイズ -> 物理サイズ 6 x 6 mm 速度や正確さが向上 / 快適に感じる -> 物理サイズ 10 x 10 mm • コントロールのレイアウト、感覚など ICONIA W7 (11.6”) + 120 dpi で 60 ピクセル前後 ちょうど、リボンの大きいボタンと同じくらい
  • 44. Office 2013 • マウス モード • 従来と同じ • 指で押しづらい • タッチ モード • タッチ向け • 余白が広い = 指で押しやすい
  • 47. DPI-aware application • 高精細モニター搭載デバイスが主流に • 主力タブレット PC 製品は軒並み 160 ~ 200 ppi • 既定の DPI は 120 ~ 144 dpi、もしくはそれ以上が主流に • DPI-aware application はむしろ「当然」の域に • DPI 仮想化機能 • あくまで非対応アプリへの救済措置 • WPF を使いましょう (デバイス非依存ピクセル)
  • 48. Per-Monitor DPI • Windows 8.1 Preview 新機能 • モニターごとに適切な DPI を自動設定 • ウィンドウがモニター間を移動すると自動的にスケーリング • Per-Monitor DPI-aware • モニター間移動でスケーリングするにはアプリ側で対応が必要 • 現状、WPF などは対応できない? (正式版に期待)
  • 49. Touch Experience • デスクトップで意識すべき点 • コントロールの大きさが十分か • マウス固有の動きに依存していないか • UX Guidelines 読もう • タッチ対応を含め、デスクトップ アプリの開発を支援 • Office などの UI を例にしてみてもよいかも
  • 50. Reference • DPI and Device-Independent Pixels http://msdn.microsoft.com/en-us/library/windows/desktop/ff684173(v=vs.85).aspx • Guidelines for scaling to pixel density (Windows Store apps) http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx • Writing DPI-Aware Desktop Applications in Windows 8.1 Preview http://go.microsoft.com/fwlink/p/?LinkID=307061 • DPI Tutorial sample http://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744/description
  • 51. Reference • Getting system DPI in WPF app.. - MSDN Blogs http://blogs.msdn.com/b/jaimer/archive/2007/03/07/getting-system-dpi-in-wpf-app.aspx • Scaling to different screens - Building Windows 8 - MSDN Blogs http://blogs.msdn.com/b/b8/archive/2012/03/21/scaling-to-different-screens.aspx • Windows User Experience Interaction Guidelines http://msdn.microsoft.com/en-us/library/windows/desktop/aa511258.aspx