2016-02-07 8 views
6

私はウィンドウをディスプレイの側面または隅で整列しようとすると、画面の端とウィンドウの端の間に何らかのパディングがあることがわかりました。 私はテンプレートから新しいWPFプロジェクトを作成していたが、コンストラクタ内でのみ2行を追加し、この得た:それは画面の端に適合しないのはなぜWPFとWIndows 10.ウィンドウの周りに見えない境界線がありますか?



を?私はこのような右下隅にウィンドウを配置しようと、同じ問題:

Rect workArea = SystemParameters.WorkArea; 
Left = workArea.Location.X + workArea.Width - Width; 
Top = workArea.Location.Y + workArea.Height - Height; 

ウィンドウがwin10で7px(ちょうどwin7の上など)の境界線が、目に見えないを持っているように見えます。また私は、WindowStyleWindowStyle.Noneに、ResizeModeResizeMode.NoResizeに設定すると、システムが正しくウィンドウを配置するが、これは私が必要とするものではないことが分かった。 win7では、同じプログラムが期待通りに機能します。

私はLeftプロパティを-7に設定できますが、解決策ではありません。 win7とwin10の両方でよく見えるように、どうすれば適切にウィンドウの場所を設定できますか?

+0

右下のケースの場合、(表示後の)ActualWidthとActualHeightプロパティを試しましたか? –

+0

@KyloRenはい、結果は同じです – BlackOverlord

+0

は、 "this.Left = 0 - SystemParameters.ResizeFrameVerticalBorderWidth - SystemParameters.FixedFrameVerticalBorderWidth;"は、ウィンドウ10のプログラミングの観点から使用できます。それ以外の場合は、私が考えるChromeWindowクラスを使用する必要があります。 –

答えて

5

Windows 10では、左/右/下のサイズ変更可能な境界線が表示されなくなり、境界線が境界線になります。画面の中央にウィンドウを置き、ウィンドウの左端にマウスをドラッグすると、カーソルがウィンドウの端を越えてさらに8ピクセル分のサイズ変更カーソルに変わります。それは国境がまだ存在することを示しています。

通常のGetWindowRect関数とDwmGetWindowAttribute関数を使用して、DWMWA_EXTENDED_FRAME_BOUNDSパラメータを組み合わせてオフサイトを得ることができます。

1

メトリックは同じです(レジストリのPaddedBorderWidthはまだ-60です)。テーマ(「Aero」)で完全なサイズ変更ハンドルを実現します。それはガラスではなく、Office 2013でレンダリングする方法とは全く違うものです。あなたのアプリケーションはで、文字通りはWindows 7と10の両方で同じピクセル座標に描画されますが、Windows 7のみがそのギャップを埋めるガラス効果を持ちます。

+0

OK、窓ガラス効果(とその厚さ)を持っているかどうかを知ることはできますか、その醜いギャップを避けるためにないですか? – BlackOverlord

+0

私が知っていることは決してありません。境界線のサイズはレジストリのウィンドウメトリックではなくテーマによって適用されているので、決定するためにクエリを実行することはできません。最初に気になることは、ウィンドウのバージョンが10以上に検出されたときに、多くのピクセルだけでシフトすることです。 – CmdrKeene

関連する問題