繁体   English   中英

如何在WPF中绘制许多可单击的矩形?

[英]How to draw a lot of clickable rectangles in WPF?

我正在开发一个基本的思维导图程序,但是我没有很多使用WPF进行绘图的经验。 我希望能够在其上绘制带有文本的矩形,例如,我希望能够单击矩形以更改文本。 截至目前,我有:

private void DrawSubject(int curve, double X, double Y, Brush clr)
        {
            Rectangle rect = new Rectangle();
            rect.Width = 62;
            rect.Height = 38;
            rect.Fill = clr;
            rect.Stroke = line;
            rect.RadiusX = rect.RadiusY = curve;
            Canvas.SetLeft(rect, X);
            Canvas.SetTop(rect, Y);
            mindmap.Children.Add(rect);
        }

SolidColorBrush line = new SolidColorBrush(Color.FromArgb(255, 21, 26, 53));

minmap是画布的名称。 我希望能够绘制很多这些矩形,这些矩形提供了思维导图的分支。 但是,当我在随机位置上绘制了10,000个这样的图形时,在完成所有图形的绘制之后,诊断工具中的过程内存增加了100 MB。 我这样做是为了模拟具有10,000个分支的思维导图。 所以我想知道是否有办法减少这些矩形的已用内存? 还是最好使用DrawingVisual和grid.click事件,该事件通过将矩形的坐标放入列表中来检查单击的位置是否与矩形的位置匹配?

我会尝试使用您描述的DrawingVisual方法,如果这在性能上证明是昂贵的(我不知道DrawingVisual的工作原理),则可以考虑将OpenGLDirectX嵌入到您的应用程序中并通过它们渲染它们。

但是,光线绘制绘制的视觉效果而不是对每个视觉效果进行控制绝对是您按比例缩放的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM