首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何缩放和设置具有xy坐标的画框的原点

如何缩放和设置具有xy坐标的画框的原点
EN

Stack Overflow用户
提问于 2015-11-06 21:38:34
回答 1查看 1.9K关注 0票数 0

我有一系列由三角测量方法生成的X,Y坐标。我想画线到X,Y坐标在一个图片框,以便数据输入可以验证。我的代码生成这些x,y值来动态创建文本框,然后在图片框上绘制它们。目前,它正在工作,但产生的线条非常小,而且它们没有居中。我怎么才能解决这个问题?picturebox1是500x500。这是代码

代码语言:javascript
运行
复制
 Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    If Me.CheckBox1.Checked = True Then
        Dim n As Integer
        Dim g As Graphics
        g = PictureBox1.CreateGraphics

        Dim x, y, x1, y1 As String
        x = Me.Controls.Item("myTextBoxX1").Text
        y = Me.Controls.Item("myTextBoxY1").Text
        x1 = Me.Controls.Item("myTextBoxX2").Text
        y1 = Me.Controls.Item("myTextBoxY2").Text

        Dim xi, yi, x1i, y1i As Integer

        xi = Convert.ToDecimal(x)
        yi = Convert.ToDecimal(y)
        x1i = Convert.ToDecimal(x1)
        y1i = Convert.ToDecimal(y1)

        g.DrawLine(New Pen(ForeColor), xi, yi, x1i, y1i)
        Dim x1a, y1a, x2a, y2a As String
        Dim x1ai, y1ai, x2ai, y2ai As Integer
        For n = 3 To Me.TextBoxABPts.Text
            x1a = Me.Controls.Item("myTextBoxX" & n - 1).Text
            y1a = Me.Controls.Item("myTextBoxY" & n - 1).Text
            x2a = Me.Controls.Item("myTextBoxX" & n).Text
            y2a = Me.Controls.Item("myTextBoxY" & n).Text



            x1ai = Convert.ToDecimal(x1a)
            y1ai = Convert.ToDecimal(y1a)
            x2ai = Convert.ToDecimal(x2a)
            y2ai = Convert.ToDecimal(y2a)

            g.DrawLine(New Pen(ForeColor), x1ai, y1ai, x2ai, y2ai)
        Next n

        g.DrawLine(New Pen(ForeColor), x2ai, y2ai, xi, yi)
    End If
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 22:19:57

使用.Net点处理坐标可能会更容易一些。它们由X和Y整数值组成。PointF是另一个基于单身的结构。这两种方法都对你有用。创建一个可以转换为刻度坐标的函数。

代码语言:javascript
运行
复制
Private Function ScaledPoint(Point As Point, Origin As Point, Optional Scale As Double = 1.0) As Point
    Return New Point(CInt(Origin.X + Point.X * Scale), CInt(Origin.Y + Point.Y * Scale))
End Function

在您的应用程序中,定义一个起源和比例因子。例如:

代码语言:javascript
运行
复制
Dim origin As New Point(200, 100) 'Moves all points 200 right, 100 down.
Dim scaleFactor As Double = 5 'Makes drawing 5 times larger.

现在,在您调用g.DrawLine的地方,将其更改为如下所示:

代码语言:javascript
运行
复制
Dim Point1 As New Point(x1ai, y1ai) 'There are lots of ways to do this.
Dim Point2 As New Point(x2ai, y2ai) 'This is only an example.
g.DrawLine(New Pen(ForeColor), ScaledPoint(Point1, origin), ScaledPoint(Point2, origin))

定义Point1和Point2的方法很多。

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

https://stackoverflow.com/questions/33576110

复制
相关文章

相似问题

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