0

vb.net の画像ボックスに楕円を作成しています。この楕円をクリックすると、別のフォームが開きます。画像ボックスには地図の画像が含まれており、地図で見つかった建物に楕円を配置するだけで、その建物に関する情報が表示されると思います...

注:マップに関する情報と画像が mysql データベースに保存されている vb.net でインタラクティブなマップを作成する簡単な方法がある場合..

4

1 に答える 1

3

以下は、点が楕円の内側にあるかどうかを計算するために領域を使用する方法を示すサンプル アプリケーションです。

注: 新しい WinForms アプリケーションを作成し、コードを次のファイル内に貼り付けますForm1.vb

Public Class Form1
    Private ellipse_center As Point

    Private A As Integer = 140
    Private B As Integer = 90

    Private isInsideEllipse As Boolean

    Private canvasRect As Rectangle

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.SetStyle(ControlStyles.UserPaint, True)
        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
        Me.SetStyle(ControlStyles.ResizeRedraw, True)

        Me.Font = New Font(Me.Font.FontFamily, 12, FontStyle.Bold)
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
        isInsideEllipse = (e.Location.X - ellipse_center.X) ^ 2 / (A / 2) ^ 2 + (e.Location.Y - ellipse_center.Y) ^ 2 / (B / 2) ^ 2 <= 1
        Me.Invalidate()
    End Sub

    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        Dim g As Graphics = e.Graphics

        Using p As New Pen(If(isInsideEllipse, Brushes.Blue, Brushes.Red), 2)
            g.DrawEllipse(p, ellipse_center.X - A \ 2, ellipse_center.Y - B \ 2, A, B)
        End Using

        g.DrawString("Pointer is" + If(isInsideEllipse, " ", " not ") + "inside the ellipse", Me.Font, Brushes.Black, 5, 5)
    End Sub

    Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        canvasRect = Me.DisplayRectangle
        canvasRect.Inflate(-1, -1)

        ellipse_center = New Point(canvasRect.Width / 2, canvasRect.Height / 2)
    End Sub
End Class

ところで、ここで正しい式を見つけました: Check if a point is within a ellipse @ Mathematics

于 2013-01-15T13:35:45.817 に答える