vb.net默认坐标系 vb窗体默认的坐标单位

VB.NET坐标变换

Dim g As Graphics = PictureBox1.CreateGraphics

创新互联是一家专业提供恩阳企业网站建设,专注与做网站、网站制作、HTML5、小程序制作等业务。10年已为恩阳众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

g.TranslateTransform(2, 2) ‘定义原点坐标

g.ScaleTransform(1, -1) ’X轴不变,反转Y轴

以PictureBox1中(2,2)点为新的原点(0,0)

向右为X轴正方向 向上为Y轴正方向

vb.net读取txt的数据作图问题

一、分析:

1,这一类随时间而变化的曲线图,通常把横轴作为时间,把纵轴作为相应的值,在这里就是密度值。

2,点的集合就是线;一组时间、密度值,对应一个点,把点连接起来就构成了线。

二、在VB.NET中作图,需要知道并解决几个问题:

1,与VB6一样,VB.NET中默认的坐标系统,左上角为坐标原点,X轴的正向为从左向右,Y轴的正向是从上向下。

为了使得它与数学中的坐标系统相一致,可以使用VB.NET中Graphics类的两个方法;

1、TranslateTransform----平移变换

格式:Graphics.TranslateTransform(dx,dy)

其中:dx 和 dy分别是Single数据类型

2、ScaleTransform----缩放变换

格式:Graphics.ScaleTransform(sx,sy)

其中:sx 和 sy分别是Single数据类型;

例如:为了符合数学中的一般格式,可以使用下述代码:

Graphics.ScaleTransform(1, -1)

这样就把Y轴的正方向给翻过来了。

三、VB.NET中绘制图形

1,绘制圆或椭圆

'绘制图形的三步曲

'1,获得一个Graphics对象

Dim MyGraphics As Graphics

MyGraphics = Me.CreateGraphics

'2,定义一个Pen对象,用于绘制图形(轮廓线)

Dim MyPen As New Pen(Color.Black)

'3,定义一个Brush对象,用于填充图形(如果需要填充的话)

Dim MyBrush As New SolidBrush(Color.Orange)

'绘制一个实心圆,该圆在:直线x=200,y=200,x=200+100,y=200+100所划的矩形区域内

MyGraphics.FillEllipse(Brush, 200, 200, 100, 100)

'绘制一个空心圆,该圆在:直线x=200,y=200,x=200+100,y=200+100所划的矩形区域内

MyGraphics.DrawEllipse(Pen, 200, 200, 100, 100)

注意:最后两个数值如果不等,就是绘制椭圆

当圆足够小,就是点了。

2,绘制直线

'1,获得一个Graphics对象

Dim MyGraphics As Graphics

MyGraphics = Me.CreateGraphics

'2,定义一个Pen对象,用于绘制图形(轮廓线)

Dim MyPen As New Pen(Color.Black)

MyGraphics.DrawLine(MyPen, 200, 200, 100, 100)

'或者直接用

Me.CreateGraphics.DrawLine(New Pen(Color.Black), 50, 50, 200, 200)

vb.net怎么自定义坐标系

scale(x1,y1)-(x2,y2)

你只要记住,这里的x1,y1是左上角的坐标,x2,y2是右下角的坐标,通过这两个点的坐标设定,就可以决定坐标原点的位置以及坐标轴的方向了,比如

Scale (-300,200)-(300,-200)

以上是把坐标原点设在窗体中心,x轴长600,方向从左到右,y轴长400,方向从下向上。

Scale (800,0)-(0,600)

以上是把坐标原点设在窗体右上角,x轴长800,方向从右到左,y轴长600,方向从上向下。

下面说坐标轴和原点的标示法:

假定自定义坐标设为:

Scale (-300, 200)-(300, -200)

Line (-300, 0)-(300, 0) '画x轴

Line (0, 200)-(0, -200) '画y轴

CurrentX = 290

CurrentY = -5

Print "x" '标示x轴

CurrentX = 5

CurrentY = 200

Print "y" '标示y轴

CurrentX = 5

CurrentY = -5

Print "0" '标示原点

VB.NET想用GetWindowRECT获取某窗口的坐标,但测试结果是L,T,R,B显示都是0,0,0,0

很简单,原因有二。第一,VB里long是32位,但是VB.NET里是64位,Dim ksWND As Integer才对。第二,VB在API里默认传址,而VB.NET默认传值,所以API里要添加Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,添加"ByRef" lpRect As RECT) As Integer

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,byref lpRect As RECT) As Integer

Private Structure RECT

Dim Left As Integer

Dim Top As Integer

Dim Right As Integer

Dim Bottom As Integer

End Structure

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim ksWND As integer

Dim ksTitle As String

Dim winS As RECT

If TextBox1.Text "" Then

ksTitle = TextBox1.Text

ksWND = FindWindow(vbNullString, ksTitle)

GetWindowRect(ksWND, winS)

MsgBox("左上角坐标(" winS.Left "," winS.Top ")" vbCrLf "右下角坐标(" winS.Right "," winS.Bottom ")" vbCrLf "窗口高" winS.Bottom - winS.Top "窗口宽" winS.Right - winS.Left)

Else

MsgBox("请填写窗口名称")

End If

End Sub


文章标题:vb.net默认坐标系 vb窗体默认的坐标单位
分享网址:http://azwzsj.com/article/ddddodo.html