選択した要素に境界ボックスをマークする単純なAdornerを作成します。私はそれが鋭く、ちょうどターゲットコンテンツの外に1ピクセルであることを望んでいます。便利なコードがいくつか見つかりましたが、私が望んだコードと正確には動作しません。WPFとGuidelineSetとのアラインメント
私SelectAdornerのOnRender方法は次のとおりです。
Rect adornedElementRect = new Rect(AdornedElement.DesiredSize);
SolidColorBrush renderBrush = new SolidColorBrush(Colors.Transparent);
Pen renderPen = new Pen(new SolidColorBrush(Colors.LightBlue), 1);
double halfPenWidth = renderPen.Thickness/2;
// Create a guidelines set
GuidelineSet guidelines = new GuidelineSet();
guidelines.GuidelinesX.Add(adornedElementRect.Left + halfPenWidth);
guidelines.GuidelinesX.Add(adornedElementRect.Right + halfPenWidth);
guidelines.GuidelinesY.Add(adornedElementRect.Top + halfPenWidth);
guidelines.GuidelinesY.Add(adornedElementRect.Bottom + halfPenWidth);
drawingContext.PushGuidelineSet(guidelines);
drawingContext.DrawRectangle(renderBrush, renderPen, adornedElementRect);
問題は、(第2及び第3項を参照)バウンディングボックスは、コンテンツの周りに適切に配置されていないということです。私はその結果を下の写真の一番下の項目からのものにします。
任意のアイデアをどのように私は私が望むものを達成することができますか?
また、私が必要な場合は、renderPen.Thickness
が1より大きい場合と同じ方法でAdornerを動作させるといいでしょう。
ありがとうございます。
なぜボーダー要素を使用してみませんか?実際の問題のレポを提供してください:https://stackoverflow.com/help/mcve – mm8