【问题标题】:Why do I get an OverflowException when using Graphics.ScaleTransform?为什么在使用 Graphics.ScaleTransform 时会出现 OverflowException?
【发布时间】:2014-04-25 08:03:47
【问题描述】:

我有一些我正在使用的编辑器的绘图代码。它画了几条线和一个图像缓冲区。添加缩放功能并调用ScaleTransform 后,我的paint 方法中抛出了OverflowException

是否有超出范围的缩放?我的缩放因子是2.0,我什至尝试过1.0,并确保所有窗口大小/缓冲区都足够大。

【问题讨论】:

    标签: c# winforms scaletransform overflowexception


    【解决方案1】:

    Graphics.Transform 属性未重置为单位矩阵。您必须在您的绘制方法开始时自己执行此操作:

    g.Tranfsorm = new Matrix();
    g.ScaleTransform(2.0, 2.0);
    

    否则在几个指数之后它会溢出(在我的应用程序中以每秒 60 帧的速度,这似乎是瞬时的)

    【讨论】:

    • 嗯,不,根本问题是您使用 CreateGraphics() 而不是使用 Paint 事件。因此,您必须在完成后妥善恢复它。请改用其 Save() 和 Restore() 方法。使用 CreateGraphics 很少是正确的,但在 60 fps 时还可以。
    • 你错了,因为我不使用CreateGraphics :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2013-01-05
    • 2021-06-26
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多