Windowsフォーム環境でシェイプを作成できるプロジェクトを行っています。現時点では、Circle1 と Rectangle1 という 2 つの異なる形状があります。これらは、似たようなプロパティを持っていると呼ばれるものです。
type Rectangle1(x:int, y:int,brush1)=
let mutable thisx = x
let mutable thisy = y
let mutable thiswidth = 50
let mutable thisheight = 20
let mutable brush = brush1
member obj.x with get () = thisx and set x = thisx <- x
member oby.y with get () = thisy and set y = thisy <- y
member obj.brush1 with get () = brush and set brush1 = brush <- brush1
member obj.width with get () = thiswidth and set width = thiswidth <- width
member obj.height with get () = thisheight and set height = thisheight <- height
member obj.draw(g:Graphics) = g.FillRectangle(brush,thisx,thisy,thiswidth,thisheight)
この四角形はクリック可能で移動可能ですが、問題が発生しました。c# の BringToFront() メソッドに似た何らかのメソッドが必要です。図形をクリックすると、その図形が他のすべての図形の前面に表示されるようにします。
私のストレージリストは次のようになります。
let mutable RectangleList:List<Rectangle1> = []
そして、ヒットテストを使用して、ユーザーがシェイプにヒットしたかどうかを判断します。
let rec VilketObjRec (e:MouseEventArgs) (inputlist:List<Rectangle1>) =
match inputlist with
|[] -> None
|head::tail -> if (((e.X >= head.x) && (e.X <= (head.x + head.width))) && (e.Y >= head.y) && (e.Y <= (head.y+head.height)))
then Some(head) else VilketObjRec e tail
この問題に取り組む方法を知っている人はいますか? 率直に言って、私は迷っています。