我的主要目的是在放大画布时更新drawingvisuals厚度。如果画布中有太多的绘图视觉效果(如100.000行),则需要很长时间才能更新每个绘图视图。 所以我决定在班上有一个Pen属性,然后用那支笔创建dravingvisuals。笔的厚度属性与画布的缩放比例绑定。这种方式缩放工作,它足够快,并且正确地更新了视觉效果的厚度。 关于这一点的问题是创建100000行需要花费大约4分钟的时间。
public Pen pen { get; set; }
private void test()
{
Point lastPoint=new Point(0,0);
double lastAngle=0;
for (int i = 1; i <100000; i++)
{
Line temp = new Line(lastPoint, lastAngle, 20);
_lineList.Add(temp);
lastPoint = temp.Point2;
lastAngle = lastAngle > 360 ? 0 : lastAngle + 30;
}
foreach (Line l in _lineList)
{
VisualAdd(l.Geometri(), l.CNID, pen);
}
}
public void VisualAdd(Geometry g, int id, Pen p)
{
DrawingVisual c = DrawingVisualCreate(g, id, p);
_children.Add(DrawingVisualOlustur(g,id,p));
}
private DrawingVisual DrawingVisualCreate(Geometry g, int id,Pen p)
{
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawGeometry(null, p, g);
drawingContext.Close();
drawingVisual.Id = id;
return drawingVisual;
}
如果我创建如下图所示的图形来创建100000行仅需2秒。但正如我解释的那样更新厚度,而缩放将是一个大问题。
public void VisualAdd(Geometry g, int id)
{
DrawingVisual c = DrawingVisualCreate(g, id);
_children.Add(DrawingVisualOlustur(g,id,p));
}
private DrawingVisual DrawingVisualCreate(Geometry g, int id)
{
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawGeometry(null, new Pen(Brushes.Black,1), g);
drawingContext.Close();
drawingVisual.Id = id;
return drawingVisual;
}
我不明白为什么在使用创建属性的笔创建时速度很慢。