覆盖Graphics.DrawLine
我寻求@override
Graphics
类的DrawLine
方法,但我不确定这是否可行?
我试图在方法中进行validation,以便它停止绘制我将提供的某个Y变量,有效地向该方法添加一个新参数。
任何人都有一些经验或建议来覆盖这种特定的方法?
我不确定这个问题所以我不知道我是否可以简单地做@Override
,然后给它一个validation,因为它正在绘制单独的像素点。
谢谢。
你只需要一个单独的方法。 把它放在你想要的任何地方:
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, ...)
。
普通代码不可能替换未设计为替换/覆盖的方法。
您可以
- 预处理(即ILDASM / modify / ILASM)所有调用程序集都使用您的新方法
- 用您自己的程序替换System.Drawing程序集
- 使用一些现有的框架,如果你需要它来进行unit testing,它可以覆盖像Moles或Fakes这样的方法。