我寫一個C#程序顯示一個音頻信號,我是成功的跟隨,如何避免位圖,而在圖片框繪製
- 我把圖片框的滾動屏上的窗體上。
- 採樣PCM數據並製作位圖並將其放置在圖片框上。
但最近我發現位圖的大小在C#(2^16像素)中是有限的。因此,使用位圖對象顯示長音頻文件是不可能的。
我正在尋找這個問題的替代解決方案(直接繪製到圖片框)。任何人都可以幫我嗎?
我寫一個C#程序顯示一個音頻信號,我是成功的跟隨,如何避免位圖,而在圖片框繪製
但最近我發現位圖的大小在C#(2^16像素)中是有限的。因此,使用位圖對象顯示長音頻文件是不可能的。
我正在尋找這個問題的替代解決方案(直接繪製到圖片框)。任何人都可以幫我嗎?
您可以創建自己的控件而不是使用PictureBox
。例如,從Control
派生並覆蓋OnPaintXXX
事件。
然後,您可以將示例信息傳遞給控件並重新繪製它自己。爲了加快速度,你也可以以大塊的方式進行繪畫。我的意思是:將要繪製的區域劃分爲多個矩形,將所有矩形獨立繪製(位圖)爲位圖,並將位圖繪製到相應的位置。
我不確定你從哪裏得到這些信息。從MSDN: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapsource.aspx
的圖像的最大高度和寬度是在每個通道* 4個通道32位2^16個像素。 BitmapSource的最大大小爲2^32個字節(64千兆字節),最大圖像大小爲4個千兆像素。最小圖像大小爲1x1。
我懷疑你讀了「最大寬度和高度」作爲「最大尺寸」,它不是。這是沿一個方向的最大像素數。
捕獲picturebox.paint事件,並使用'Graphics'對象進行繪製。您需要創建多個離屏「位圖」。 –
控件的大小限制爲2^16。所以不要使用PictureBox。設置面板的AutoScrollMinSize屬性並實現其Paint事件。使用AutoScrollPosition來確定索引數據的位置。在其Scroll事件中調用Invalidate()。 –