使用「縮放」佈局背景圖像時,實際寬度和高度並不總是與包含控件的寬度和高度相匹配,而不是「拉伸」佈局。我想知道是否有一個屬性或WinForms中的東西檢索當前圖像呈現的維度,而不做任何數學?使用「縮放」佈局的背景圖像的實際尺寸
1
A
回答
1
這將返回從PictureBox
的Rectangle
像素的任何SizeModes
。
但是,它確實需要一些數學縮放模式。
它可以很容易地適應相應的BackgroudImageLayout
值:
Rectangle ImageArea(PictureBox pbox)
{
Size si = pbox.Image.Size;
Size sp = pbox.ClientSize;
if (pbox.SizeMode == PictureBoxSizeMode.StretchImage) return pbox.ClientRectangle;
if (pbox.SizeMode == PictureBoxSizeMode.Normal ||
pbox.SizeMode == PictureBoxSizeMode.AutoSize) return new Rectangle(Point.Empty, si);
if (pbox.SizeMode == PictureBoxSizeMode.CenterImage)
return new Rectangle(new Point((sp.Width - si.Width)/2,
(sp.Height - si.Height)/2), si);
// PictureBoxSizeMode.Zoom
float ri = si.Width/si.Height;
float rp = sp.Width/sp.Height;
if (rp > ri)
{
int width = si.Width * sp.Height/si.Height;
int left = (sp.Width - width)/2;
return new Rectangle(left, 0, width, sp.Height);
}
else
{
int height = si.Height * sp.Width/si.Width;
int top = (sp.Height - height)/2;
return new Rectangle(0, top, sp.Width, height);
}
}
+0
有點看起來像我提出的,雖然有關'PictureBox' –
+0
True的問題中沒有一個單詞,但像'Panel'或'Label'這樣的控件的BackgroundImageLayout基本上與'PictureBoxSizeMode相同',除了它沒有'Tile'模式,但有一個'Autosize'模式。 – TaW
相關問題
- 1. 背景圖像的尺寸
- 2. 根據屏幕尺寸縮放div格式的背景圖像
- 3. 縮放與背景圖像的DIV,以適應屏幕尺寸
- 4. Dropzone.js預覽尺寸縮放至實際圖片尺寸
- 5. 線性佈局的背景圖像尺寸不是很好
- 6. 背景中的CSS漸變使用截面尺寸縮放
- 7. 調整SVG背景圖像的尺寸
- 8. 屏幕尺寸的背景圖像
- 9. Div背景圖像的最大尺寸
- 10. 背景圖像的最大尺寸CSS
- 11. 的Cocos2D V2 CCSprite背景圖像尺寸
- 12. IONIC2背景圖像的尺寸時
- 13. 獲取背景圖像的尺寸
- 14. div中的全尺寸背景圖像?
- 15. XXHDPI的Android背景圖像尺寸
- 16. 印刷圖像的實際尺寸
- 17. 與Div尺寸縮小同步縮小背景圖像
- 18. iOS:使用自動佈局縮放不同的屏幕尺寸
- 19. 獲取縮放圖像的尺寸
- 20. 的Android圖像按鈕縮放/尺寸
- 21. 畫布縮放保留像素尺寸
- 22. Android的圖像佈局尺寸
- 23. 縮放瀏覽器時全屏背景圖像的最小尺寸
- 24. 如何根據屏幕尺寸縮放div中的背景圖像
- 25. 使用CSS縮放背景圖像
- 26. 使用CSS縮放背景圖像
- 27. 根據背景圖像尺寸div
- 28. 得到背景圖像尺寸
- 29. css背景圖像適應尺寸
- 30. 固定尺寸背景圖像
沒有,我知道的。數學真的有那麼嚇人嗎? – adv12
@ adv12不,我喜歡數學,事實上,我已經在等待這個動物的時候做了它,但爲什麼要重新創造一個輪子? –