覆盖Graphics.DrawLine

时间:2012-09-05 23:48:30

标签: c#

我寻求@override DrawLine类的Graphics方法,但我不确定这是否可行?

我试图在方法中进行验证,以便它停止绘制我将提供的某个Y变量,有效地为方法添加一个新参数。

任何人都有一些关于覆盖这种特定方法的经验或建议吗?

我不确定这个问题所以我不知道我是否可以简单地做@Override然后给它一个验证,因为它正在绘制单独的像素点。

感谢。

2 个答案:

答案 0 :(得分:1)

您只需要一个单独的方法。把它放在任何你想要的地方:

void CheckedDrawLine(Graphics g, int x1, int y1, int x2, int y2, int stopY) {
    // Do the validation, draw the line
}

你可以把它放在static class

中,然后将它变成一种扩展方法
void CheckedDrawLine(this Graphics g, int x1, int y1, int x2, int y2, int stopY) {
    // Do the validation, draw the line
}

执行g.CheckedDrawLine(...)而不是CheckedDrawLine(g, ...)

答案 1 :(得分:1)

普通代码无法替换非设计用于替换/覆盖的方法。

你可以

  • 预处理(即ILDASM / modify / ILASM)所有调用程序集以使用您的新方法
  • 用您自己的
  • 替换System.Drawing程序集
  • 使用一些现有框架,如果您需要进行单元测试,可以覆盖Moles或Fakes之类的方法。