掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
描画した図形をカーソルヒットで個別に反転するには? (ID:124401)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっております。 VB.NETで複数の図形を描き,それを個別に認識させ,図形にカーソルヒットで 反転させたいのですが,方法がわかりません…。 リージョンとグラフィックパスを使用するとカーソルヒットによる反転は 可能になったのですが,リージョン一個に図形追加をしていくため 描いた図形すべてが反転されてしまいます。 カーソルヒットしている図形をリージョンから取り出し,個別に反転を行う事は 可能なのでしょうか?(リージョンを配列化し一個ずつセットするしか方法が思い浮かびません…。) 下記に長々と申し訳ありませんが,現在の一部ソースを明記します。 Dim rgn As New Region 'リージョン Dim pa0, pa1 As New GraphicsPath 'グラフィックスパス 'グラフィックパスとリージョンセット Private Sub frmRegion_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize (省略:図形のグラフィックパス) 'Regionにセット rgn.MakeEmpty() rgn.Union(pa0) '矩形 rgn.Union(pa1) '円 Me.Invalidate() End Sub '図形描画 Private Sub frmRegion_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim g As Graphics = e.Graphics 'グラフィックインスタンス '現状は全図形が反転されるソースになっていますが,ここでカーソルヒットしている図形の反転色をセットしたい。 With g .FillPath(bPol, pa0) '矩形描画 .FillEllipse(bPol, rFs) '円描画 .DrawPath(Pens.Black, pa0) '矩形反転 .DrawEllipse(Pens.Black, rFs) '円反転 End With End Sub 'カーソル移動による図形反転色セット Private Sub frmPath_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove If rgn.IsVisible(e.X, e.Y) Then ←ここでどの図形がカーソルヒットしているのかを判断し,反転色をセットしたいのですが…。 Me.Cursor = Cursors.Hand '図形ヒットカーソルセット bPol = New SolidBrush(Color.GreenYellow) '反転色セット Debug.WriteLine("ON") Else Me.Cursor = Cursors.Default 'カーソルデフォルト bPol = New SolidBrush(Color.FromName("Control")) '反転色解除 Debug.WriteLine("OFF") End If Me.Refresh() End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.