2014-07-12 34 views
0

我想创建借鉴了右上角一个椭圆形的刷子,我想这一点:如何用WPF中的背景创建画笔?

<DrawingBrush Stretch="None" AlignmentX="Right" AlignmentY="Top"> 
    <DrawingBrush.Drawing> 
     <GeometryDrawing Brush="Green"> 
      <GeometryDrawing.Geometry> 
       <EllipseGeometry RadiusX="60.0" RadiusY="60.0" /> 
      </GeometryDrawing.Geometry> 
     </GeometryDrawing> 
    </DrawingBrush.Drawing> 
</DrawingBrush> 

椭圆是在其位置,但休息区是透明的。我可以创建一个画笔,在右上角绘制一个带有不透明背景的椭圆形画笔吗?我可以使用其他笔刷作为背景吗?

回答

1

你的DrawingBrush可以包含一个DrawingGroup与多个图纸,每个都有自己的画笔。在这里,我添加了一个淡绿色RectangleGeometry适合你的椭圆形的后面,充当背景:

<DrawingBrush Stretch="None" AlignmentX="Right" AlignmentY="Top"> 
     <DrawingBrush.Drawing> 
      <DrawingGroup> 
       <GeometryDrawing Brush="PaleGreen"> 
        <GeometryDrawing.Geometry> 
         <RectangleGeometry Rect="-60,-60,120,120" /> 
        </GeometryDrawing.Geometry> 
       </GeometryDrawing> 
       <GeometryDrawing Brush="Green"> 
        <GeometryDrawing.Geometry> 
         <EllipseGeometry RadiusX="60.0" RadiusY="60.0" /> 
        </GeometryDrawing.Geometry> 
       </GeometryDrawing> 
      </DrawingGroup> 
     </DrawingBrush.Drawing> 
    </DrawingBrush> 

给有背景填满所有可用的空间,我建议您为Window.Background填充刷,然后覆盖另一个要求元素在右上角以包含椭圆。

+0

但你的画笔仍然有一个有限的界限。矩形外的区域仍然是透明的。我希望画笔能够像第一次使用无限边界的纯色画笔一样工作,然后在拐角处画一个椭圆。 – EFanZh

+0

@FanZh好吧;为什么这需要在一个单一的笔刷,而不是在目标元素上使用背景颜色,然后覆盖另一个包含这个椭圆的元素? – Jay

+0

我在写窗口模板,在窗口的右上角布置控件按钮。用户可能想要更改窗口的背景。背景需要相对于右上角的笔刷,而且我不希望我的窗口具有透明背景。如果无法完成,我想我会修改我的模板以支持此功能。 – EFanZh

相关问题