2

我在为图形界面课程做的练习中遇到了一些问题。我正在用 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)

还是这两个版本是一样的?

我问这个是因为第一个版本经常出现问题。

4

0 回答 0