簡體   English   中英

將PictureBox中的圖像調整到最大可能的大小,同時保持縱橫比?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM