有没有办法用重载运算符扩展Point(或任何其他)类型?

时间:2018-03-14 13:50:36

标签: .net vb.net operator-overloading extension-methods

OnPaint事件中的循环中,我使用DrawString绘制一个字符串。在绘制字符串之前,客户端矩形oRect需要偏移一些像素。在一个循环中,很明显这个抵消必须撤消,否则它们会相加。

这可以按预期工作:

Protected Overrides Sub OnPaint(e As PaintEventArgs)
    ...

    oRect.Offset(oOffset)
    e.Graphics.DrawString(sText, oFont, oBrush, oRect, oStringFormat)
    oRect.Offset(New Point(- oOffset.X, - oOffset.Y))

    ...
End Sub

但是,通过简单地指定否定运算符来撤消偏移量会更好。当然,我可以继续使用名为Negate的扩展名并将其应用如下:

    oRect.Offset(Negate(oOffset))

但是,我想这样做:

    oRect.Offset(- oOffset)

尝试在模块中为重载运算符指定扩展名告诉我,我无法对运算符应用扩展。

是否有其他方法可以使用重载运算符扩展Point(或任何其他)类型?

0 个答案:

没有答案