求助:DrawLine绘图好像比较慢,有没有别的办法?

shaopr 2006-08-25 10:51:43
实现在Form上显示30道波形,每道3600×50条线段。
如下:
for (int i = 0; i < 30; i++)
{
y1 = y0 + unitY;
x1 = 0;

for (int j = 0; j < 3600; j++)
{

for (int k = 0; k < 50; k++)
{
x2 = x1 + unitX;
y2 = data[j, i, 0, k];
if (y2 > y0 + unitY / 2)
y2 = y0 + unitY / 2;
else if (y2 < y0 - unitY / 2)
y2 = y0 - unitY / 2;
g.DrawLine(drawPen, x1, y1, x2, y2);
x1 = x2;
y1 = y2;
}

}
这样显示完大概要一分钟的时间,郁闷。是不是跟DrawLine有关啊?
还有data[j, i, k]是用来存数据的,但是我觉得数组不是太稳定,请问有没有别的方法?
...全文
471 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaopr 2006-08-25
  • 打赏
  • 举报
回复
还有用多维数组存数据好吗?有没有别的办法。
shaopr 2006-08-25
  • 打赏
  • 举报
回复
谢谢两位这么热心,
能不能举个简单的例子。
潇雨歇 2006-08-25
  • 打赏
  • 举报
回复
算法有问题,
你不要每次一个一个点的去绘,
只要计算出来起始点和终点,一次会出,如果这个不好计算而且是折线的话,可以用
Path,一次成型,应该知道Paint是非常耗费资源的,
mobydick 2006-08-25
  • 打赏
  • 举报
回复
试试DrawPath

public void DrawPathEllipse(PaintEventArgs e)
{

// Create graphics path object and add ellipse.
GraphicsPath graphPath = new GraphicsPath();
graphPath.AddEllipse(0, 0, 200, 100);

// Create pen.
Pen blackPen = new Pen(Color.Black, 3);

// Draw graphics path to screen.
e.Graphics.DrawPath(blackPen, graphPath);
}
先把波形存到GraphicsPath中再画
另外使用双缓冲可是防止画面闪烁。
shaopr 2006-08-25
  • 打赏
  • 举报
回复
对于运用四维数组有没有什么建议?
fds2003 2006-08-25
  • 打赏
  • 举报
回复
来晚了!
shaopr 2006-08-25
  • 打赏
  • 举报
回复
谢谢,先去试试。
Knight94 2006-08-25
  • 打赏
  • 举报
回复
不要一边画一边显示,采用double-buffer,在bitmap上处理,然后画完了后一起显示。

参看
http://blog.csdn.net/Knight94/archive/2006/08/18/1094078.aspx

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧