在图片框上绘图时如何避免位图

本文关键字:何避免 位图 绘图 | 更新日期: 2023-09-27 18:16:16

我正在写一个c#程序来显示音频信号,我成功了,如下所示,

  1. 我把图片框放在窗体的滚动面板上。
  2. 对PCM数据进行采样,制作位图并放置在图片框上。

但是最近我发现位图的大小在c#中是有限的(2^16像素)。因此,使用位图对象显示长音频文件是不可能的。

我正在寻找这个问题的替代解决方案(直接画到图片框)。有人能帮帮我吗?

在图片框上绘图时如何避免位图

您可以创建自己的控件,而不是使用PictureBox。例如,从Control派生并覆盖OnPaintXXX事件。

然后,您可以将示例信息传递给控件,并让它重新绘制自己。为了加快速度,你也可以把画分成大块。我的意思是:将要绘制的区域划分为多个矩形,将所有矩形独立绘制成位图,并将位图绘制到各自的位置。

我不知道你从哪里得到这个信息的。从MSDN:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapsource.aspx

图像的最大高度和宽度为2^16像素,每通道32位* 4通道。BitmapSource的最大大小是2^32字节(64千兆字节),最大图像大小是40亿像素。最小图像大小为1x1。

我怀疑你把"最大宽度和高度"读成"最大尺寸",而不是。它是沿一个方向的最大像素数。