首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WPF -怎样才能让画笔画出像纸一样的正方形呢?

WPF -怎样才能让画笔画出像纸一样的正方形呢?
EN

Stack Overflow用户
提问于 2009-04-30 15:12:29
回答 4查看 11.4K关注 0票数 20

如何创建一个画笔来绘制在水平轴和垂直轴上均匀分布的1单位粗线的规则重复网格?想象一下图表纸,如果你愿意的话。

理想情况下,该解决方案将允许控制用于线条和背景(方块内的区域)的画笔。通过这种方式,背景可以是透明的,这样网格就可以作为覆盖。

编辑这里是一张图片,显示了汤姆的回答结果如下:

在这个例子中,网格被用来合成三个层,以显示网格是真正透明的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-30 17:56:23

来自http://msdn.microsoft.com/en-us/library/aa480159.aspx

代码语言:javascript
复制
<DrawingBrush Viewport="0,0,10,10" 
              ViewportUnits="Absolute"
              TileMode="Tile">
  <DrawingBrush.Drawing>
    <DrawingGroup>
      <GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="Green" />
      <GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="Green" />
    </DrawingGroup>
  </DrawingBrush.Drawing>
</DrawingBrush>
票数 26
EN

Stack Overflow用户

发布于 2009-04-30 15:45:39

使用DrawingBrush。绘图可以包含形状、图像、文本和媒体。

下面的示例使用DrawingBrush绘制矩形的填充。

代码语言:javascript
复制
Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a DrawingBrush and use it to
// paint the rectangle.
DrawingBrush myBrush = new DrawingBrush();

GeometryDrawing backgroundSquare =
    new GeometryDrawing(
        Brushes.White,
        null,
        new RectangleGeometry(new Rect(0, 0, 100, 100)));

GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));

LinearGradientBrush checkerBrush = new LinearGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.Black, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.Gray, 1.0));

GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);

DrawingGroup checkersDrawingGroup = new DrawingGroup();
checkersDrawingGroup.Children.Add(backgroundSquare);
checkersDrawingGroup.Children.Add(checkers);

myBrush.Drawing = checkersDrawingGroup;
myBrush.Viewport = new Rect(0, 0, 0.25, 0.25);
myBrush.TileMode = TileMode.Tile;

exampleRectangle.Fill = myBrush;

来源:MSDN: WPF Brushes Overview

票数 2
EN

Stack Overflow用户

发布于 2009-04-30 15:47:51

您可以使用VisualBrush在XAML中完成此操作。作为为您提供起点的示例,使用VisualBrush创建带阴影的画笔的here is a blog post。它非常接近网格-而且转换起来相当容易。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/807428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档