关于在asp.net中C#画多条直线执行效率问题?
C#语言,在pictureBox控件中画直线时,数量少画得很快,当数量为100条时执行时间明显长了很多,卡一下才显示所画的100条直线。请大家帮看一下要怎么优化才执行快些...
C#语言,在pictureBox控件中画直线时,数量少画得很快,当数量为100条时执行时间明显长了很多,卡一下才显示所画的100条直线。请大家帮看一下要怎么优化才执行快些?代码如下:
Point[] pt;
Point p1, p2;
List<Point[]> pts = new List<Point[]>();
public void InitData()
{
int x1, y1, x2, y2;
for (int r = 0; r <101; r++)
{
x1 = 0;
y1 = r * 32;
x2 = 101* 32;
y2 = r * 32;
p1 = new Point(x1,y1);
p2 = new Point(x2,y2);
pt = new Point[2];
pt[0] = p1;
pt[1] = p2;
pts.Add(pt);
}
}
//调用画图方法
public void myDraw()
{
Bitmap bmp = new Bitmap(100*32, 100*32);
Graphics g = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.White, 1);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
foreach (Point[] po in pts)
{
g.DrawLine(pen, po[0], po[1]);
}
pictureBox1.Image = bmp;
pen.Dispose();
g.Dispose();
} 展开
Point[] pt;
Point p1, p2;
List<Point[]> pts = new List<Point[]>();
public void InitData()
{
int x1, y1, x2, y2;
for (int r = 0; r <101; r++)
{
x1 = 0;
y1 = r * 32;
x2 = 101* 32;
y2 = r * 32;
p1 = new Point(x1,y1);
p2 = new Point(x2,y2);
pt = new Point[2];
pt[0] = p1;
pt[1] = p2;
pts.Add(pt);
}
}
//调用画图方法
public void myDraw()
{
Bitmap bmp = new Bitmap(100*32, 100*32);
Graphics g = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.White, 1);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
foreach (Point[] po in pts)
{
g.DrawLine(pen, po[0], po[1]);
}
pictureBox1.Image = bmp;
pen.Dispose();
g.Dispose();
} 展开
2个回答
展开全部
没看太明白你到底要画什么,不过你那好像不是画一些简单图形,而是把整个图片按像素全部重绘了一遍,这自然是有点卡了。要么就说一下你到底要实现什么样的功能,要么就建议使用多线程试试。还有,在winform里面写代码测试还方便些。
更多追问追答
追问
你好,我这个是在winform窗体中写的代码,请看明白Graphics g = Graphics.FromImage(bmp)之意,并不是画整张图,而是利用bitmap来创建缓存画布,在bitmap画好要画的图形,经过pictureBox1控件显示出来。要画100根线循环100次就很慢,不懂改用什么方法才快?
追答
把你所有的代码贴出来,或者打包发百度网盘,我来给你测试一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询