【问题标题】:Double to Int conversion in Rectangle constructorRectangle 构造函数中的 Double 到 Int 转换
【发布时间】:2014-08-11 19:26:41
【问题描述】:

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

【问题讨论】:

  • 你可以将乘法的结果转换成int?

标签: c# winforms


【解决方案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)
              )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2016-07-24
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多