【问题标题】:placing a canvas on top of another one in WPF?在WPF中将画布放在另一个画布上?
【发布时间】:2011-08-26 02:05:18
【问题描述】:

我正在 WPF 中开发一个图形控件。我需要将Canvas 放在另一个上面。一位Canvas 包含网格线,另一个Canvas 在其上绘制对象。

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

所以我从对象的画布中移除了孩子,并不时重绘它。如果我在移除对象时使用相同的画布,网格线也会消失。

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

请帮忙。

问候, 兰加纳。

【问题讨论】:

    标签: wpf layout canvas


    【解决方案1】:

    有几种方法可以做到这一点。这是一个。只需扩展 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      相关资源
      最近更新 更多