一種方法是覆蓋UIElement
的OnRender
作爲MSDN SimpleCircleAdorner example看到。
// A common way to implement an adorner's rendering behavior is to override the OnRender
// method, which is called by the layout system as part of a rendering pass.
protected override void OnRender(DrawingContext drawingContext)
{
Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize);
// Some arbitrary drawing implements.
SolidColorBrush renderBrush = new SolidColorBrush(Colors.Green);
renderBrush.Opacity = 0.2;
Pen renderPen = new Pen(new SolidColorBrush(Colors.Navy), 1.5);
double renderRadius = 5.0;
// Draw a circle at each corner.
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius);
drawingContext.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius);
}
}
如果你想提供一個典型的矩形或圓角矩形,你將不得不使用path geometries,讓您打造出一個片段組成的路徑,如BezierSegment
,一個LineSegment
外的強大的解決方案,或ArcSegment
,從而在UIElement
周圍創建適當的路徑。
如果另一方面矩形或圓角矩形就足夠了,則可以在OnRender
重寫中分別使用DrawingContext.DrawRectangle
和DrawingContext.DrawRoundedRectangle
。
你能提供一個你想要突出顯示的樣本嗎?你有沒有試過`DropShadowEffect`? – 2011-01-24 20:58:05
請參閱我對Aaron的評論。我想強調「視覺」的概要。我在想的是獲得輪廓的「路徑」幾何體,並使用填充了純色和動畫不透明度的幾何體。基礎是以某種方式進入* any *`Visual`的輪廓。我還沒有嘗試過`DropShadowEffect`。我會對某種產生某種* overlay *效果的東西感興趣,而不是影子。 – wpfwannabe 2011-01-24 21:56:53