在c#表单中使用painteventargs;如何将更大的图像绘制到Graphics对象(还有滚动条)?

时间:2013-07-25 21:15:38

标签: c# graphics draw

我正在写一些数据采集代码。当应用程序获取数据时,它会将图形绘制到内容窗格中。对于由固定长度扫描组成的数据,现在一切都很完美:图表只是缩放以适合从painteventargs获得的图形对象。我们现在正在实施一个“免费扫描”,只是在收集数据时长度增加。我们想要绘制尺寸不断增大的图形到painteventargs的图形对象,但是一旦它比图形对象大,就会生成“内存不足”异常。有没有办法增长图形对象或只是替换它?我们希望能够使用滚动条查看所有数据。

感谢您的帮助!

这是代码的一大块(注意:我理解为什么我会出现内存不足错误 - 位图太大。这只是尝试做我想做的事情。我是问这个问题,因为我现在很难过。):

    System.Drawing.Graphics G = e.Graphics;
    e.Graphics.Clear(System.Drawing.Color.White);                
    Bitmap bm = new Bitmap(10000, 1000);
    Graphics h = Graphics.FromImage(bm);
    h.DrawLine(myPens[0], 0, 0, 1000, 10000);
    G.DrawImage(bm,0,0);

1 个答案:

答案 0 :(得分:0)

我建议您使用的是计算平均点并绘制图形而不是每个数据点。这也是由领先的图表控件完成的。要不隐藏用户的详细信息,您应该实现缩放功能,该功能仅需要特定的数据间隔。随着您放大时间间隔越小。您放大的更多细节可以显示。希望这个策略能够进一步帮助你。