[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/06/04(Mon) 14:23
投稿者名:なな
Eメール:
URL :
タイトル:
楕円が選択されるとフォーカスを当てたい
お世話になります。

VB歴3年のPGです。
環境:VB6(SP5) WinXp

PictureBox上に楕円を描いています。描いた楕円上を選択している場合、フォーカスを当てる処理を行いたいです。

やりたい事は、Excel上で絵を描いたときのイメージと同じ感じです。
@までは、Vbで作成済みですが、Aの処理で悩んでいます。

@オートシェープの楕円を選び、楕円を描きます。
A楕円上が選択されている場合、フォーカスが当たって(○でを8箇所で囲んでいる)います。
※実際に試す時は、@の後にオートシェープの書式設定で、色を「塗りつぶしなし」を選びます。

「特に、楕円が選択されているか?」という判定をどのように行えば良いか分かりません。
@の楕円を描く処理は、以下の通りです。
--------------------------------------------------------
Dim UpX1 As Long
Dim UpX2 As Long
Dim UpY1 As Long
Dim UpY2 As Long

Dim UpX3 As Long
Dim UpY3 As Long

Dim booFlg As Boolean

Private Sub Form_Load()
    Picture1.ScaleMode = 3
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    booFlg = True
    
    UpX1 = X
    UpY1 = Y
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If booFlg = True Then
    
        UpX3 = X
        UpY3 = Y
        
        Picture1.Refresh
                      
        Ellipse Picture1.hDC, UpX1, UpY1, UpX3, UpY3

    End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    UpX2 = X
    UpY2 = Y
    
    If booFlg = True Then
        Picture1.Refresh
        
        Ellipse Picture1.hDC, UpX1, UpY1, UpX2, UpY2
        booFlg = False
    End If

End Sub

'楕円を描画するAPI
Declare Function Ellipse Lib "gdi32" ( _
    ByVal hDC As Long, _
    ByVal Left As Long, _
    ByVal Top As Long, _
    ByVal Right As Long, _
    ByVal Bottom As Long) As Long

投稿時間:2007/06/04(Mon) 15:03
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re: 楕円が選択されるとフォーカスを当てたい
楕円の方程式は、数学の内容を扱ったホームページにあると思います。
例えば
http://www004.upp.so-net.ne.jp/s_honma/curve/parameter.htm

あとは指定した点(マウスの座標)がその図形の中にあるか?
座標の計算ですね。これも昔は高校で習った内容ですが。。。
検索したらゲームの当たり判定をしているコードがあったので
参考にしてみてください。
http://www005.upp.so-net.ne.jp/h-masuda/vb6/vb6game/ufo0405.html

投稿時間:2007/06/05(Tue) 18:45
投稿者名:なな
Eメール:
URL :
タイトル:
Re^2: 楕円が選択されるとフォーカスを当てたい
るしぇ様

早々のご回答ありがとうございます。
ご意見を参考にさせていただき。
「解決」しました。