2011-12-01 68 views
0

我写一个C#程序显示一个音频信号,我是成功的跟随,如何避免位图,而在图片框绘制

  1. 我把图片框的滚动屏上的窗体上。
  2. 采样PCM数据并制作位图并将其放置在图片框上。

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

我正在寻找这个问题的替代解决方案(直接绘制到图片框)。任何人都可以帮我吗?

+0

捕获picturebox.paint事件,并使用'Graphics'对象进行绘制。您需要创建多个离屏“位图”。 –

+0

控件的大小限制为2^16。所以不要使用PictureBox。设置面板的AutoScrollMinSize属性并实现其Paint事件。使用AutoScrollPosition来确定索引数据的位置。在其Scroll事件中调用Invalidate()。 –

回答

1

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

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

-1

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

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

我怀疑你读了“最大宽度和高度”作为“最大尺寸”,它不是。这是沿一个方向的最大像素数。