我在为图形界面课程做的练习中遇到了一些问题。我正在用 F# 编写一个以这种方式定义的程序:
- 我有一个 A 类,我在其中重写了 OnPaint 方法;
- 我有另一个 B 类,在其中我覆盖了 OnPaint 方法、OnMouse[Down/Move/Up] 方法等。
我会将A中重写的OnPaint方法用到B中定义的重写OnPaint方法中(显然A中的OnPaint方法是在A类中定义的,也就是说我必须实例化一个A类对象)。
我的问题是:我该怎么做?我是否需要在 A 中定义一个方法,在该方法中我传递 PaintEventArgs.Graphics 参数与 A 的 OnPaint 方法的相同任务,而不是覆盖 A 中的 OnPaint 方法?
一个例子:我必须做这样的事情:
type Ellipse() =
...
override this.OnPaint e =
e.Graphics.DrawEllipse(10.f, 10.f, 30.f, 30.f)
type classThatUseEllipse() =
let ell = new Ellipse()
...
override this.OnPaint e =
ell.OnPaint(e)
或者类似的东西?:
type Ellipse() =
...
let myOnPaint (e:PaintEventArgs) =
e.Graphics.DrawEllipse(10.f, 10.f, 30.f, 30.f)
type classThatUseEllipse() =
let ell = new Ellipse()
...
override this.OnPaint e =
ell.myOnPaint(e)
还是这两个版本是一样的?
我问这个是因为第一个版本经常出现问题。