在网格控件上绘制一个快照模式

本文关键字:一个 快照 模式 网格 控件 绘制 | 更新日期: 2023-09-27 18:12:20

我有一个我使用的解决方案,但这个解决方案并没有真正赋予我所需的所有能力。

现在,我将Grid控件的背景设置为VisualBrush,该控件在其Visual容器上包含一个椭圆。这使得我不可能在绘制的正方形后面设置背景颜色(至少以我目前的知识)。

我使用这些正方形作为我的快照定位功能的标记。看到图片。

https://i.stack.imgur.com/J9CZf.jpg

是否有一种可能的方法让我保持我的背景图案,也能够设置背景颜色?另一种方法也很受欢迎,因为我觉得我已经学会了这种方法,因为它(部分地)有效。

由于需求:

  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。我要做的是画出链接中显示的图案并且可以为背景设置颜色并在其上添加圆点图案

在网格控件上绘制一个快照模式

你可以用画布覆盖网格和快照点,或者你可以用快照点创建一个装饰层。

从MSDN页面引用

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

所以控件的布局(按z轴顺序)将是:

    网格
  • 与快照点叠加(不知道事件将如何处理)
  • 元素

  • 网格
    • 装饰层
  • 元素