問題タブ [adornerlayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WPF:CaptureMouseが失敗するのはなぜですか?
タブ コントロール内に複数のタブがある非常に複雑なビューがあります。1 つのタブには、装飾層を持つコントロールがあります。マウス入力をキャプチャするために、MouseLeftButtonDown イベント ハンドラーで CaptureMouse を呼び出す装飾層。すべて正常に動作します。
しかし、特定の順序でビューのタブを切り替えてから装飾層をクリックすると、マウス入力のキャプチャに失敗します: CaptureMouse() は false を返します。同時に Mouse.Captured は null を返します。装飾層をホストするコントロールは引き続き正常に動作し、マウスをキャプチャすることさえできます。
多くのカスタム コントロールが動作しているため、コードを提供できません。単純化されたレイアウトでは、すべてが正常に機能します。
CaptureMouse が失敗する理由を教えてください。
wpf - クリッピング AdornerLayer
PanZoomImage
次のように定義されたクラスがあります。
画像に Adorners を表示したい場合があるAdornerLayer
ため、画像に次のプロパティを提供します。
このプロパティを使用して、さまざまな装飾を画像に追加します。問題は、画像をパンまたはズームすると、 aodrners がクリップされず、次PanZoomImage
のように を保持するコントロールの外側に表示されることです。
私はいくつかの解決策を試しました:
ClipToBounds=True
ボーダー、キャンバス、画像の設定をしてみました。
と各アドーナーを個別に設定ClipToBounds=True
してみました。AdornerLayer
Adorner の OnRender で Clip Geometry を設定してみました。
またIsClipEnabled
、Adorner にプロパティがあることに気付きましたが、それを true に設定しようとすると、NullReferenceException が発生し続けました (Adorner は間違いなく null ではありませんでした)...
ありがとう!
wpf - AdornerLayersが常に最上位のレイヤーであるのはなぜですか?それを変更する方法はありますか?
- アドナーレイヤーが常にアプリケーションの最上位レイヤーとしてレンダリングされるのはなぜですか(AdornerDecoratorの下-スクリーンショットを参照)?
- 装飾者を描くことができるレイヤー/レベルを変更する方法はありますか?
次のスクリーンショットでは、AdornerLayerがAdornerDecoratorに追加され、Adorners(MyAdorners)がこのAdornerLayerに追加されています。しかし、AdornerLayerは次のように取得されます。
wpf - 所有している ListView に対する特定の ListViewItem の座標を取得する
ListViewItem を表すコンテナーの物理座標 (具体的には、TOP と BOTTOM に関心があります) を特定しようとしています。
次の方法で ListViewItem への参照があります。
ここで、項目を取得して、リストビュー全体に対する上位と下位の値を把握する必要があります。これは、ドラッグ ドロップ中にドラッグライン インジケーターを表示するためのものです。
誰でも洞察を提供できますか?
ありがとう
wpf - ListViewItem が WPF ListView で完全に表示されているか、部分的にのみ表示されているかを判断する
私はWPF ListViewを持っています。この ListView には n 個の項目が含まれます。
ユーザーが何かをリストビューにドラッグすると、ListView の AdornerLayer に水平バーが表示され、アイテムが挿入されるインデックスが表示されます。
また、listView を自動スクロールしています。ScrollViewer.CanContentScroll="False" ListViewItems は部分的に表示されるためです。
私が抱えている問題は、描画しているインジケーター バーが、ListViewItem が上部にあり、部分的にしか表示されていないときに、ListView の境界の外側に表示されることです (上記の場合)。
バーを描画するトリガーは、現在ホバリングしている ListViewItem を取得し、その上限値を取得して線を描画することです。ListViewItem がまだ完全に表示されていない場合、バーは ListView 自体の上に描画され、明らかに奇妙に見えます。
概要: 特定の ListViewItem が ListView で部分的にしか表示されないかどうかを判断しようとしています。
この場合、コードはそれほど重要ではありませんが、必要に応じて投稿できます。
ありがとう
wpf - WPF 装飾者とカスタム装飾者?
ダイアグラム エディターを作成したいのですが、大量のアイテムを移動およびサイズ変更する必要があります。
また、デフォルトの WPF アドナーが遅いと聞いたことがあります。
レスポンシブな崇拝者層を作るための最良の方法と推奨事項は何ですか? カスタムですか、それとも WPF 組み込みの装飾に基づいていますか? 私が知る限り、表現ブレンドも独自の装飾実装を使用しています。
私にとっては、実装時間よりもパフォーマンスの方が重要です。
ありがとう。
c# - 装飾要素の左上以外の場所に装飾の位置を付けることができますか?
左上のポイント以外の、装飾された要素の別のポイントに装飾を固定する方法が見つかりません。ArrangeOverride を実装することで、この点を基準にして装飾を移動できることはわかっていますが、座標系は常に左上に基づいています。
何か案は?
c# - 画像をズームするとAdornerLayerがBorderの外に出る WPF
グリッド内の境界線内に含まれる画像をトリミングするロジックを作成しました。グリッドには多くの境界線があるため、このグリッドには多くの画像が含まれます。問題は、画像をズームすると、ロジックが画像をズームしたことです (これは問題ありません) AdornerLayer
。
この画像では、写真にズームがないため、AdornerLayer
正しいです:
トリミングを画像に追加するために使用しているコード:
この場合、fel という名前のオブジェクトはトリミングしたい画像で、Border はその親です。
画像をズームすると外に出る AdornerLayout の問題を修正するにはどうすればよいですか?
wpf - Windows フォーム コントロールの上に描画する
現在のプロジェクトでは、PDF を表示し、その上に描画する必要があります。これは、WPF アプリケーションでホストできる Windows フォーム コントロールでホストできるため、Adobe Reader を PDF ビューアとして使用しています。ただし、このコントロールを描画することはできません。
この問題を解決するにはいくつかのアプローチがあるようですが、私の人生では、既存のコードに適合する一般的な解決策の良い例を見つけることができないようです。私が見ることができる最も一般的なソリューションは Adorner/Layer/Decorators ですが、アプリケーションを壊さない方法でそれらを XAML に取り込む方法が見つかりません。
私の現在のXAMLは次のとおりです。
PDF ビューアの上に移動する必要があるのは、実行時に定義される一連の形状です。それらの形状をその上に貼り付けることができる方法についての提案は大歓迎です.
ありがとう!