2011-12-01 39 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。

我懷疑你讀了「最大寬度和高度」作爲「最大尺寸」,它不是。這是沿一個方向的最大像素數。