使用“缩放”布局背景图像时,实际宽度和高度并不总是与包含控件的宽度和高度相匹配,而不是“拉伸”布局。我想知道是否有一个属性或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不,我喜欢数学,事实上,我已经在等待这个动物的时候做了它,但为什么要重新创造一个轮子? –