画面にポイントを描く機能があります。この関数は、で行を追加するまで非常にうまく機能しましたpanelGraphics.RotateTransform
。この線がある場合、1回の再塗装を行うプロセスは非常に長くなります。私のポイントのリストには約5000ポイントが含まれており、回転がない場合は数ミリ秒で完了しますが、その行を使用すると最大500ミリ秒かかる可能性があり、非常に低速です。RotateTransformが非常に遅い理由と、これを最適化するために何ができるかを知っていますか?
private void panel1_Paint(object sender, PaintEventArgs e)
{
Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);
SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
Graphics panelGraphics = panel1.CreateGraphics();
panelGraphics.TranslateTransform((panel1.Width / 2) + _panW, (panel1.Height / 2) + _panH);
//Problematic line...
panelGraphics.RotateTransform(230 - Convert.ToInt32(_dPan), System.Drawing.Drawing2D.MatrixOrder.Prepend);
PointF ptPrevious = new PointF(float.MaxValue, float.MaxValue);
foreach (PointF pt in _listPoint)
{
panelGraphics.FillRectangle(myBrush, (pt.X / 25) * _fZoomFactor, (pt.Y / 25) * _fZoomFactor, 2, 2);
}
myBrush.Dispose();
myPen.Dispose();
panelGraphics.Dispose();
}