gpt4 book ai didi

c# - 如何在Canvas上用画笔绘制棋盘图案?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:41 25 4
gpt4 key购买 nike

我得到了 Canvas 和一些 width 不同但 height 相同的 Rectangles。我在 Canvas 上 pragramticaly 绘制 Rectangleswidth 在绘制时实时计算。

一些 RectanglesSolidColorBrush 但其余的应该看起来像棋盘:

enter image description here

我试着这样做:

private static Brush CreateBrush()
{

// Create a DrawingBrush
var blackBrush = new DrawingBrush();
// Create a Geometry with white background

// Create a GeometryGroup that will be added to Geometry
var gGroup = new GeometryGroup();
gGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 10, 10)));
gGroup.Children.Add(new RectangleGeometry(new Rect(10, 10, 10, 10)));
// Create a GeomertyDrawing
var checkers =
new GeometryDrawing(new SolidColorBrush(Colors.Black), null, gGroup);

var checkersDrawingGroup = new DrawingGroup();

checkersDrawingGroup.Children.Add(checkers);

blackBrush.Drawing = checkersDrawingGroup;

// Set Viewport and TileMode
blackBrush.Viewport = new Rect(0, 0, 0.5, 0.5 );
blackBrush.TileMode = TileMode.Tile;

return blackBrush;
}

至于 Rectangles 有不同的大小,相同的 DrawingBrush 在不同的 Rectangles 上看起来不同 - 它不是重复填充它,而是拉伸(stretch)。

据我所知,问题出在 blackBrush.Viewport = new Rect(0, 0, 0.5, 0.5 ); - 我应该根据每个设置不同的 Viewports Rectangle width,但这对我来说是 Not Acceptable 。我需要对所有不同大小和纹理的矩形使用一个画笔,看起来应该像一张图片 - X 和 Y 的比例相同,但它可以在一个 Rectangle

中重复多次

也许有另一种笔刷类型或其他方法可以解决这个问题?

随便问,如果我的帖子不清楚,也对不起我的英语。

添加我需要的图片: enter image description here(这与宽度无关,与纹理填充有关)

最佳答案

问题出在 Viewport 设置上,您应该将其 ViewportUnits 设置为 Absolute 而不是 RelativeToBoundingBox (默认情况下):

//we have to use a fixed size for the squares
blackBrush.Viewport = new Rect(0, 0, 60, 60);
blackBrush.Viewport.ViewportUnits = BrushMappingMode.Absolute;

这是一个使用纯 XAML 显示检查板的示例:

<Grid>
<Grid.Background>
<DrawingBrush TileMode="Tile" Viewport="0,0,60,60"
ViewportUnits="Absolute">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="Black"
Geometry="M5,5 L0,5 0,10 5,10 5,5 10,5 10,0 5,0 Z"/>
</DrawingBrush.Drawing>
</DrawingBrush>
</Grid.Background>
</Grid>

关于c# - 如何在Canvas上用画笔绘制棋盘图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com