[英]Resize an image in a PictureBox to as large as it can go, while maintaining aspect ratio?
我試圖使它成為PictureBox控件中的圖像將根據窗口的大小自動調整其大小,但保持縱橫比。 到目前為止,僅將SizeMode
設置為StretchImage
會導致圖像拉伸以適合整個PictureBox控件。 這忽略了縱橫比,這不是我想要的。
是否可以保持縱橫比,但仍然可以將圖像拉伸到表格尺寸變化時可以動態移動的最大值? 是否可以這樣做,並讓它仍然居中? 我想每次調整窗口大小時我都可以在內存中重新創建圖像,但這似乎是一個壞主意。
我相信這是PictureBoxSizeMode.Zoom
的影響。 文件說:
保持尺寸比,增大或減小圖像的尺寸。
您在PictureBox.SizeMode
屬性上設置此項。 該功能文檔的“備注”部分還說:
使用“縮放”值可以拉伸或縮小圖像以適合PictureBox; 但是,保持原件的縱橫比。
當然,您可以在設計器的“屬性”窗口或代碼中(例如,在窗體的構造函數中)設置PictureBox.SizeMode
屬性:
myPictureBox.SizeMode = PictureBoxSizeMode.Zoom;
如果這不能完全符合您的要求,您可以自己實現調整大小邏輯。 你擔心的是每次控件調整大小時在內存中重新創建圖像“似乎是一個壞主意”,但我不確定為什么它似乎對你而言。 唯一的問題是如果你不小心破壞未使用的圖形對象,比如舊的Bitmap
。 這些對象不僅包含需要釋放的非托管資源,如果只是讓它們泄漏,你將開始對內存施加極大的壓力。
或者,為了避免創建臨時位圖,您可以執行PictureBox控件可能在內部執行的操作,並使用Graphics.DrawImage
方法來處理拉伸。 如果您傳遞一個矩形,它將自動縮放圖像以適合矩形內部。
改變“SizeMode”來Zoom
。 顧名思義,“StretchImage”將拉伸它以適合圖像文件。 簡單的消除過程會給你相同的結果。
根據PictureBoxSizeMode
文檔,您可以指定PictureBoxSizeMode.Zoom
以使圖像保持其縱橫比。 它將變焦盡可能大,圖像框中沒有任何圖像溢出。
您可以使用Dock
屬性 (設置DockStyle.Fill
)來使圖片框調整為其容器的大小。
您可以將其添加到Web瀏覽器控件。 使用Ctrl和鼠標按鈕可以根據需要放大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.