デスクトップ全体に半透明のウィンドウを表示する小さなアプリがあります。ウィンドウがタスクバーに表示されず、タイトルバーが表示されないリアルタイムで矩形を移動するときの複数画面にわたる半透明ウィンドウのパフォーマンス
このウィンドウでは、マウスで矩形をドラッグできます。 マウスボタンを離すと、指定された領域のスクリーンショットが取得されます。 (Windows 7のスナップツールのようなもの)
これを達成するために、ウィンドウにはRectangleGeometryが含まれています。
CompositionTarget.Renderingイベントでは、マウスがダウンしたときのマウスの位置に設定された矩形があり、現在のマウス位置までの領域もカバーします。
これは、モニタが1台だけ接続されている限り、これは本当にうまく動作します。 高解像度の2台目のモニターを接続すると、パフォーマンスが大幅に低下します。
ラップトップディスプレイの解像度は、ディスプレイを接続することがHERESに新しい
ウィンドウ定義に一次スクリーニングを変更したとき接続されている1600×1200
ディスプレイはまた
1900x1200を有する
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
AllowsTransparency="True" Background="Transparent" WindowStyle="None" >
the geometry definition
<Path Fill="Black" Opacity="0.4" Stroke="Red" StrokeThickness="3">
<Path.Data>
<RectangleGeometry x:Name="Inner" Rect="105,5,90,90"/>
</Path.Data>
</Path>
ここで、矩形を移動するコードの一部
System.Windows.Rect location = new System.Windows.Rect(this.DragStart.X, this.DragStart.Y, width, height);
this.Inner.Rect = rect;
パフォーマンスを向上させる方法を知っている人はいますか? 複数のディスプレイで高解像度になるほど性能が低下するのは「正常」ですか?
ウィンドウが小さくなるとパフォーマンスが向上することがわかりました。セカンダリ画面のサイズと関連があるようです。誰もが大画面がWPFの問題であることを知っていますか? –