成都网站建设设计

将想法与焦点和您一起共享

关于vb点虐 使用相对坐标的信息

VB.NET坐标变换

Dim g As Graphics = PictureBox1.CreateGraphics

创新互联建站专注于岱山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供岱山营销型网站建设,岱山网站制作、岱山网页设计、岱山网站官网定制、微信小程序服务,打造岱山网络公司原创品牌,更为您提供岱山网站排名全网营销落地服务。

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

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

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

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

vb点虐 坐标的转化

也就是A(x,y)-------A'(y*sin(x*pi/180),y*cos(x*pi/180))------------前提是先:

Dim g As Graphics = Me.PictureBox1.CreateGraphics

g.TranslateTransform(x, y)'实现坐标平移,即把圆中心作为了坐标原点了-----该处的x,y为圆心在要作图picture中的相对坐标

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

vb 获取某窗口内相对坐标

仅提供解决思路。不提供代码,API请自己找齐。

这样以后你遇到类似问题可以自行解决。

以下为思路,看不懂请自己琢磨相关逻辑和API作用。

1.GetCursorPos 获取鼠标坐标 设获得的坐标为t_pos

2.WindowFromPoint 获取t_pos坐标指向的窗体 设获得的窗体句柄为hwnd

3.GetWindowRect 根据hwnd获取对应窗体坐标。此时t_pos与窗体坐标相减可以初步计算得相对坐标(包括标题栏等),设此时计算得坐标为pos

4.GetWindowLong 获取样式,判断是否存在WS_BORDER(是否有边框)

方法:

假设GetWindowLong,获取的样式保存在style中,则if style or WS_BORDER=style then 存在WS_BORDER else 不存在WS_BORDER

如果存在WS_BORDER即有边框,则再调用GetSystemMetrics得到边框和标题栏宽度高度,然后pos与之相减(减掉边框)得到坐标相对于客户区的坐标

如果不存在WS_BORDER,则pos直接就是相对于客户区的坐标(无边框)

vb中坐标系是如何定义的?如何表示绝对坐标和相对坐标。

窗体内的左上角的座标为(0,0),向右是.Left+,向左是.Left-,向下是.Top+,向上是.Top-;如果要使用相对座标,比如向右移动100,就可以写成Object.Left=Object.Left+100即可。


本文标题:关于vb点虐 使用相对坐标的信息
网页URL:http://chengdu.cdxwcx.cn/article/ddghjdj.html