-1
我创建了一个自定义Shape
,它由Rectangle
和Text
构成。下面是代码:自定义形状将不同的颜色设置为包含的几何图形wpf
protected override Geometry DefiningGeometry
{
get
{
var formattedText = new FormattedText(Text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Verdana"), 14, Brushes.Transparent);
var chosenTextPoint = new Point
{
X = ((Location.X < BottomRight.X) ? Location.X : BottomRight.X) + 5,
Y = ((Location.Y < BottomRight.Y) ? Location.Y : BottomRight.Y) + 5
};
Stroke = Brushes.ForestGreen;
StrokeThickness = (IsSelected) ? HighlightedValue : HighlightedValue/2;
Rectangle = new Rect(Location, BottomRight);
var rectangleGeometry = new RectangleGeometry(Rectangle);
var textGeometry = formattedText.BuildGeometry(chosenTextPoint);
var combinedGeometry = new CombinedGeometry
{
GeometryCombineMode = GeometryCombineMode.Xor,
Geometry1 = rectangleGeometry,
Geometry2 = textGeometry
};
combinedGeometry.Geometry1.SetValue(FillProperty, Brushes.Blue);
combinedGeometry.Geometry1.InvalidateProperty(FillProperty);
Fill = (IsSelected) ? Brushes.Transparent : null;
return combinedGeometry;
}
}
的combinedGeometry
是我最近添加了,在那之前我用PathGeometry
。在这两种情况下,Rectangle
和Text
都以相同的颜色着色,并且“遭受”相同的形状效果。
我有两种方法可以将两者分开吗?通过分离,我的意思是它们都将是Shape
中的单个元素,我可以自由修改它们中的任何一个或两者都一起?
您无法在几何上设置填充属性。一个形状总是有一个填充和一个单独的笔画。如果您需要不同的填充/笔划,请使用两个形状。 – Clemens