我正在为winforms项目制作缩放功能,到目前为止效果非常好。将鼠标移到图像上会显示指针周围的部分放大在较小的图片框中。
现在要创建较小的图片框,我需要使用Graphics.DrawImage。
myGraphics.DrawImage(originalImg,
new Rectangle(0, 0, zWidth, zHeight),
new Rectangle(e.X*6 , e.Y*6, zWidth, zHeight),
GraphicsUnit.Pixel);
高分辨率图像和低分辨率图像之间的转换比率为~5.863340,但Rectangle构造函数仅接受整数值(因此我乘以6)。这导致相当不准确的缩放。 ('e'是鼠标指针位置)
是否有可能以某种方式给它一个double值,或者将double转换为int而不会丢失小数?
答案 0 :(得分:1)
您可以使用Convert.ToInt32
,也可以使用float
和RectangleF
:
new Rectangle( Convert.ToInt32(e.X*6)
, Convert.ToInt32(e.Y*6)
, Convert.ToInt32(zWidth)
, Convert.ToInt32(zHeight)
)
或者,如果您需要一点额外的精确度:
new RectangleF( Convert.ToFloat(e.X*6)
, Convert.ToFloat(e.Y*6)
, Convert.ToFloat(zWidth)
, Convert.ToFloat(zHeight)
)