2014-10-01 41 views
-1

我已經提供了一個.avi電影,我必須使用DirectShow庫來顯示它。所以我正在使用一個pictureBox來逐幀顯示位圖圖像,但我想保持縱橫比。如何在Windows窗體中執行此操作。提前致謝。 編輯:我必須以相同的長寬比存儲一些位圖圖像。如何從c#中的.avi文件中獲得寬高比。

+0

** PictureBox爲你做了**。您可以顯示圖像居中(最終裁剪)或縮放(保持寬高比)。 – 2014-10-01 12:51:09

+0

如果您使用DS,您爲什麼顯示位圖而不是運行視頻? – Plutonix 2014-10-01 12:52:27

+0

其實,我也有電影的框架。 – midnitekoder 2014-10-01 13:04:13

回答

0

AVI格式不支持視頻的寬高比,因此您只能根據視頻流的像素分辨率假設方形像素和寬高比。大多數從流中獲取特定幀/位圖的方法都可以讓您以原始視頻分辨率進行圖像處理。你試圖保留縱橫比的位圖的進一步操作假定你用圖像尺寸做簡單的數學運算:縮放你繪製圖像的控件或區域到適當的位置:original-width * presentation-height = original-height * presentation-寬度。或者只是利用 - 如果適用 - WinForms控件能夠保持寬高比。

當您使用DirectShow API(視頻渲染器)呈現視頻時,可以選擇將高寬比保持在那裏,然而,根據所使用的渲染器的版本,它會略有不同。

+0

視頻的高度與分辨率高度相同......或者準確地說,視頻的高度與寬度的比率與分辨率高度與分辨率寬度相同。 – midnitekoder 2014-10-09 19:26:33

+0

在AVI文件中 - 是的,因爲描述符根本沒有字段來覆蓋比率。其他容器可能更靈活,並且具有像素分辨率和單獨的寬高比。這樣就可以定義所謂的「非方形像素」和有效的寬高比調整。 – 2014-10-09 19:35:26

+0

在MPG格式的情況下是像素「非方形」?..就像我必須使用AVI以及MPG視頻。預先感謝:) – midnitekoder 2014-10-09 19:44:08