首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击vb.net 2010中的椭圆事件

问单击vb.net 2010中的椭圆事件
EN

Stack Overflow用户
提问于 2013-01-15 05:55:02
回答 1查看 1.3K关注 0票数 0

我正在创建一个椭圆在vb.net的图片框中,如果我单击这个椭圆,它将打开另一个表单。图片框中包含了一张地图的图像,我只是简单地在地图中找到的建筑物上加上椭圆,我想你会认为它会向我展示关于那座建筑的信息……

注意:如果您有一种更简单的创建交互式地图的方法,在vb.net中将有关地图的信息和图像存储在mysql数据库中。

EN

回答 1

Stack Overflow用户

发布于 2013-01-15 13:35:45

下面是一个示例应用程序,演示如何使用该区域来计算一个点是否落在椭圆内:

注意:创建一个新的WinForms应用程序并将代码粘贴到Form1.vb中

代码语言:javascript
复制
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 an ellipse @ Mathematics

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14331890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档