Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 改进画布';速度反应_C#_Wpf_Canvas - Fatal编程技术网

C# 改进画布';速度反应

C# 改进画布';速度反应,c#,wpf,canvas,C#,Wpf,Canvas,我有大约70条多段线的画布,每一条都有很多点。对于这个画布,我制作了一个鼠标移动函数,虽然代码很重,但它的工作速度非常慢。我用更少的多段线尝试了这个方法,效果更好。 有人能帮我想办法让鼠标移动更好地处理所有原始多段线吗? 下面是我如何创建每条多段线(nStep的数字约为10000): 谢谢。除非我们知道你在做什么,否则我们帮不了你。如果您有一个特定的问题或慢点,请向我们显示与该问题相关的代码,否则,这里实际上没有特定的问题。如果您只是在执行用户控制的动画时尝试重新渲染背景,而不是从状态渲染绘图,

我有大约70条多段线的画布,每一条都有很多点。对于这个画布,我制作了一个
鼠标移动
函数,虽然代码很重,但它的工作速度非常慢。我用更少的多段线尝试了这个方法,效果更好。 有人能帮我想办法让
鼠标移动
更好地处理所有原始多段线吗? 下面是我如何创建每条多段线(
nStep
的数字约为10000):


谢谢。

除非我们知道你在做什么,否则我们帮不了你。如果您有一个特定的问题或慢点,请向我们显示与该问题相关的代码,否则,这里实际上没有特定的问题。如果您只是在执行用户控制的动画时尝试重新渲染背景,而不是从状态渲染绘图,您希望使用
var imgData=canvasContext.getImageData(0,0,画布宽度,画布高度);
画布上下文.putImageData(imgData,0,0)
。使用“撤消”和“重做”时,必须使用“状态”,但当设置动画以仅删除几行时,代码将不得不做太多的工作。@PHPglue问题是关于WPF,而不是HTML。请创建一个,以便我们能够更具体地理解您的问题。我添加了相关代码。除非我们知道您实际在做什么,否则我们无法帮助您。我如果您有一个特定的问题或慢点,请向我们展示与该问题相关的代码,否则,这里实际上没有特定的问题。如果您只是在执行用户控制的动画时尝试重新渲染背景,而不是从状态渲染绘图,您希望使用
var imgData=canvasContext.getImageData(0,0,画布宽度,画布高度);
画布上下文.putImageData(imgData,0,0)
。使用“撤消”和“重做”时,您必须使用状态,但当设置动画以仅删除几行时,您的代码将不得不做太多的工作。@PHPglue问题是关于WPF,而不是HTML。请创建一个状态,以便我们能够更具体地理解您的问题。我添加了相关代码。
for (int j = 0; j < nSteps; j++)
            {
                linesCounter++;
                helpString = rayLines[linesCounter].Split(' ');
                p.X = Convert.ToDouble(helpString[1]);
                p.Y = Convert.ToDouble(helpString[2]);
                beam.Add(p);
            }
            plotRay();
private void plotRay()
    {
        double x, y;
        PointCollection fitPoints = new PointCollection();
        for (int i = 0; i < nSteps; i++)
        {
            x =  beam[i].X;
            y = beam[i].Y;
            Point p = new Point();
            p.Offset(x, y);
            fitPoints.Add(p);
        }
        Polyline ray = new Polyline();
        ray = setBrush();
        ray.Points = fitPoints;
        Form.workingCanvas.Children.Add(ray);
    }
 public void mouseMove(Point currentPos)
    {
        if (firstUse)
        {
            double currentY = Math.Round((currentPos.Y) / (Yresulotion), 2);
            double currentX = Math.Round((currentPos.X) / (Xresulotion), 2);
            Form.WidthLine.Y1 = currentPos.Y;
            Form.WidthLine.Y2 = currentPos.Y;
            Form.HeightLine.X1 = currentPos.X;
            Form.HeightLine.X2 = currentPos.X;
            Form.DotOnGraph.Visibility = System.Windows.Visibility.Visible;
            Canvas.SetLeft(Form.DotOnGraph, currentPos.X -     (Form.DotOnGraph.Width / 2));
            Canvas.SetTop(Form.DotOnGraph, currentPos.Y - (Form.DotOnGraph.Height / 2));
        }
    }