在网格控件上绘制捕捉图案

时间:2011-10-26 06:53:44

标签: c# wpf background grid visualbrush

我有一个我使用的解决方案但是那个并没有真正给我所有我需要的能力。

现在,我将Grid控件的背景设置为VisualBrush,其Visual容器中包含一个椭圆。这使得我无法设置背景颜色(或者至少在我的知识面前)在绘制的正方形背后。

我使用这些方块作为我的按钮定位功能的标记。见图。

http://imgur.com/AtNYp

我有可能保留背景图案并能设置背景颜色吗?另一种方法也是受欢迎的,因为我觉得我已经下了这个,因为它有效(部分)。

由于需求:

  brush = new VisualBrush();
  brush.Stretch = Stretch.Fill;
  brush.TileMode = TileMode.Tile;
  brush.Viewport = new Rect(0, 0, SnapDistance, SnapDistance);
  brush.ViewportUnits = BrushMappingMode.Absolute;
  brush.Viewbox = new Rect(0, 0, SnapDistance, SnapDistance);
  brush.ViewboxUnits = BrushMappingMode.Absolute;
  ellipse = new Ellipse() { Fill = new SolidColorBrush(Colors.Blue), Width = 2, Height = 2 };
  brush.Visual = ellipse;

这是我设置为grid.Background的内容。我想要做的是绘制我在链接中显示的模式,并且还能够将颜色设置为背景上的点图案。

1 个答案:

答案 0 :(得分:1)

您可以使用“捕捉点”使用“画布”覆盖网格,也可以使用捕捉点创建装饰图层。

引自MSDN page

  

Adorners是一种特殊类型的FrameworkElement,用于为用户提供视觉提示。在其他用途​​中,Adorners可用于向元素添加功能句柄或提供有关控件的状态信息。

因此控件布局(按Z顺序)将为:

  • 网格
  • 带有快照点的叠加层(不知道将如何处理事件)
  • 你的元素

  • 网格
    • 装饰层
  • 你的元素