gpt4 book ai didi

wpf - 在 WPF 中将 Canvas 放在另一个 Canvas 的顶部?

转载 作者:行者123 更新时间:2023-12-04 07:02:06 26 4
gpt4 key购买 nike

我正在 WPF 中开发图形控件。我需要放置一个 Canvas在另一个之上。一 Canvas包含网格线和其他 Canvas在其上绘制对象。

这样做的原因是我需要从对象的 Canvas 中删除元素并重新绘制它,但需要保留网格线而不删除它们。

所以我从对象的 Canvas 中删除 child 并不时重新绘制它。如果我在删除对象时使用相同的 Canvas ,网格线也会消失。

有没有办法将一个 Canvas 放在另一个 Canvas 上?或者我的问题还有其他解决方案吗?

请帮忙。

问候,
兰加纳

最佳答案

有几种方法可以做到这一点。这是一个。只需扩展 Canvas 类并在 OnRender 方法中自己绘制网格。

public class GridCanvas : Canvas
{
public int rows = 4;
public int cols = 4;

protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
double yStep = this.ActualHeight / rows;
double y = yStep;

for (int i = 0; i < rows - 1; i++)
{
dc.DrawLine(new Pen(Brushes.Black, 1), new Point(0, y), new Point(this.ActualWidth, y));
y += yStep;
}

double xStep = this.ActualWidth / cols;
double x = xStep;

for (int i = 0; i < cols - 1; i++)
{
dc.DrawLine(new Pen(Brushes.Black, 1), new Point(x, 0), new Point(x, this.ActualHeight));
x += xStep;
}
}
}

关于wpf - 在 WPF 中将 Canvas 放在另一个 Canvas 的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685439/

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