Rectangle构造函数中的Double到Int转换

时间:2014-08-11 11:16:46

标签: c# winforms

我正在为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而不会丢失小数?

1 个答案:

答案 0 :(得分:1)

您可以使用Convert.ToInt32,也可以使用floatRectangleF

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)
              )