社区
VB
帖子详情
vb.net 如何获取窗体在屏幕上的坐标
rushantelope
2008-12-07 09:35:05
小弟又有难题了
如何获得当前窗体在屏幕上的坐标呀
我是要打开一个新窗体,并且让打开的新窗体在屏幕上的坐标跟现在的窗体一样。
这样应该如何编程呢?
...全文
674
14
打赏
收藏
vb.net 如何获取窗体在屏幕上的坐标
小弟又有难题了 如何获得当前窗体在屏幕上的坐标呀 我是要打开一个新窗体,并且让打开的新窗体在屏幕上的坐标跟现在的窗体一样。 这样应该如何编程呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dchlmz
2008-12-09
打赏
举报
回复
又学习了
rushantelope
2008-12-07
打赏
举报
回复
我找到办法了
form1的load事件
Dim a, b As Integer
a = Me.Location.X
b = Me.Location.Y
Form2.Location = New Point(a, b)
Form2.Show()
这里的关键是要把form2的Startposition属性设置为Manual,要不然不起作用的。
yew!!!自己搞定,菜鸟第一个冲过终点,拍拍身上的尘土,并回头向大侠们致谢。
rushantelope
2008-12-07
打赏
举报
回复
看来这个问题是比较麻烦的
rushantelope
2008-12-07
打赏
举报
回复
窗体没有screen属性,只有location属性呀。
wfp5525
2008-12-07
打赏
举报
回复
你用vb实现啊,应该不难的啊
wulingyigu1
2008-12-07
打赏
举报
回复
使用screen属性
rushantelope
2008-12-07
打赏
举报
回复
好像可以了,但C语言小弟看不懂呀。
哪位大哥帮我翻译成vb.net呀
Fibona
2008-12-07
打赏
举报
回复
在要修改的窗体代码中,比如说Form1,加一个带两个位置的构造函数
如下:
public Form1()
{
InitializeComponent();
}
public Form1(int left, int top):this()
{
this.Left = left;
this.Top = top;
}
在主窗体中,要打开Form1的地方
Form1 f = new Form1(this.Left,this.Top);
f.Show();
rushantelope
2008-12-07
打赏
举报
回复
二楼的大哥误解我的意思了,可能是我没有说清楚
我的意思是当前一个窗体在运行,当触发某个事件后又打开一个新窗体
如何使新窗体和原来的窗体的屏幕坐标一样呢?
ghzxh
2008-12-07
打赏
举报
回复
up
android2008
2008-12-07
打赏
举报
回复
up
sizemismatch
2008-12-07
打赏
举报
回复
ding
filec75
2008-12-07
打赏
举报
回复
ding
wuyq11
2008-12-07
打赏
举报
回复
Location.X
Location.Y
显示
窗体
在
屏幕
的
坐标
,鼠标在
窗体
上的
坐标
,无标题移动
显示
窗体
在
屏幕
的
坐标
,鼠标在
窗体
上的
坐标
,无标题移动 其实现方法简单,有效,很值得借鉴,VB6.0源代码
vb.net
捕获键盘按键和鼠标XY
坐标
位置.rar
vb捕获键盘按键和鼠标
坐标
位置,监测鼠标的位置和鼠标按键的名称,如
窗体
所示,随意移动鼠标,即可适时显示出鼠标
坐标
,若敲击键盘,则会
获取
到哪一个键被按下,两个功能的代码写在按钮事件中,
获取
鼠标XY
坐标
位置: Me.Label3.Text = "x=" e.X.ToString() " y=" e.Y.ToString()
获取
键盘按下: Me.Label4.Text = "code=" e.KeyCode.ToString() " value=" e.KeyValue.ToString()
VB
窗体
透镜
获取
鼠标
坐标
下颜色的实例.rar
VB
窗体
透镜
获取
鼠标
坐标
下的颜色实例,源代码都在压缩包内。 程序中有一个空
窗体
,鼠标移到
屏幕
上的任一点,都可以在
窗体
的透镜区显示鼠标所在区域的图像,就像放大镜一样,不过不具备放大镜的放大功能,同时它还可显示
屏幕
上任意像素点的颜色,运用
坐标
运算机制
获取
像素点。
vb作业源程序
很多VB作业源程序,包括多
窗体
程序设计,定义
坐标
系等等几十个小程序,是本人大学时做的作业,可以供初学vb的人参考
vb程序
屏幕
飘雪!!!
'源代码 Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long 'GetDC()功能是
获取
指定
窗体
的设备场景的句柄(hDC),用参数0则可以
获取
整个
屏幕
的场景句柄 Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long 'GetPixel用于取得场景(这里是整个
屏幕
)中某点的颜色值 Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long 'SetPixel用于设置场景(这里是整个
屏幕
)中某点的颜色值 Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long '释放由GetDC()
获取
的设备场景句柄,否则可能造成系统锁死 Private Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) '清理窗口雪花 Private Type POINTAPI '定义
坐标
点结构 x As Long y As Long End Type Private Type RECT '定义“区域”数据结构,但实际上并没有用到,因为仅需在函数InvalidateRect中传递一个空的RECT参数 left As Long top As Long right As Long bottom As Long End Type Dim rect1 As RECT Private Const ScrnWidth = 1024 '
屏幕
宽度(单位:像素) Private Const ScrnHight = 768 '
屏幕
高度(单位:像素) Private Const SnowCol = &HFEFFFE '雪花颜色 Private Const SnowColDown = &HFFFFFF '积雪颜色 Private Const SnowColDuck = &HFFDDDD '深色积雪颜色 Private Const SnowNum = 500 '同一时间飘动的雪花数量 Dim hDC1 As Long '存储桌面窗口设备句柄 Dim pData(SnowNum) As POINTAPI '存储每个雪花的位置信息 Dim pColor(SnowNum) As Long '存储画出雪花前
屏幕
原来的颜色 Dim Vx As Integer '雪花总体水平飘行速度 Dim Vy As Integer '雪花总体垂直下落速度 Dim PVx As Integer '单个雪花实际水平飘行速度 Dim PVy As Integer '单个雪花实际垂直飘行速度 '初始化雪花位置 Private Sub InitP(i As Integer) pData(i).x = Rnd() * ScrnWidth pData(i).y = Rnd() * 2 pColor(i) = GetPixel(hDC1, pData(i).x, pData(i).y) '取得
屏幕
原来的颜色值 End Sub '取得某一点与周围点的对比度,确定是否在此位置堆积雪花 Private Function GetContrast(i As Integer) As Long Dim ColorCmp As Long '存储用作对比的点的颜色值 Dim tempR As Long '存储CorlorCmp的红色部分,下同 Dim tempG As Long Dim tempB As Long Dim Slope As Integer '存储雪花飘落方向:Vx/Vy '计算雪花飘落方向 If PVy <> 0 Then Slope = PVx / PVy Else Slope = 2 End If '根据雪花飘落方向决定取哪一点作对比点, '若PVx/PVy在-1到1之间,即Slope=0,就取正下面的象素点 '若PVx/PVy>1,取右下方的点,PVx/PVy<-1则取左下方 If Slope = 0 Then ColorCmp = GetPixel(hDC1, pData(i).x, pData(i).y + 1) Else If Slope > 1 Then ColorCmp = GetPixel(hDC1, pData(i).x + 1, pData(i).y + 1) Else ColorCmp = GetPixel(hDC1, pData(i).x - 1, pData(i).y + 1) End If End If '确定当前位置没有与另一个雪花重叠,否则返回0,用于防止由于不同雪花重叠造成雪花乱堆 If ColorCmp = SnowCol Then GetContrast = 0 Exit Function End If '分别
获取
ColorCmp与对比点的蓝、绿、红部分的差值 tempB = Abs((ColorCmp And &HFF0000) - (pColor(i) And &HFF0000)) / &H10000 tempG = Abs((ColorCmp And &HFF00&) - (pColor(i) And &HFF00&)) / &H100& tempR = Abs((ColorCmp And &HFF&) - (pColor(i) And &HFF&)) '返回对比度值 GetContrast = (tempR + tempG + tempB) / 3 End Function '画出一帧,即重画所有雪花位置一次 Private Sub DrawP() Dim i As Integer For i = 0 To SnowNum '防止雪花重叠造成干扰 If pColor(i) <> SnowCol Then '还原上一个位置的颜色 SetPixel hDC1, pData(i).x, pData(i).y, pColor(i) End If '设置新的位置,i Mod 3用于将雪花分为三类采用不同速度,以便形成层次感 PVx = Rnd() * 2 - 1 + Vx * (i Mod 3) PVy = Vy * (i Mod 3 + 1) pData(i).x = pData(i).x + PVx pData(i).y = pData(i).y + PVy '取得新位置原始颜色值,用于下一步雪花飘过时恢复此处颜色 pColor(i) = GetPixel(hDC1, pData(i).x, pData(i).y) '如果
获取
颜色失败,表明雪花已飘出
屏幕
,重新初始化 If pColor(i) = -1 Then InitP i Else '否则若雪花没有重叠 If pColor(i) <> SnowCol Then '若对比度较小(即不能堆积),就画出雪花 'Rnd()>0.3用于防止某些连续而明显的边界截获所有雪花 If Rnd() > 0.3 Or GetContrast(i) < 50 Then SetPixel hDC1, pData(i).x, pData(i).y, SnowCol '否则表明找到明显的边界,画出堆积的雪,并初始化以便画新的雪花 Else SetPixel hDC1, pData(i).x, pData(i).y - 1, SnowColDuck SetPixel hDC1, pData(i).x - 1, pData(i).y, SnowColDuck SetPixel hDC1, pData(i).x + 1, pData(i).y, SnowColDown InitP i End If End If End If Next End Sub Private Sub Form_Load() Dim j As Integer Me.Caption = "桌面飘雪" '设置窗口标题 '设置计时器,Timer1用于画单帧,Timer2用于风向变化 Timer1.Enabled = True Timer1.Interval = 10 Timer2.Enabled = True Timer2.Interval = 2000 Randomize '初始化随机数种子 hDC1 = GetDC(0) '
获取
桌面窗口设备场景句柄 '初始化整个
屏幕
For j = 0 To SnowNum pData(j).x = Rnd() * ScrnWidth pData(j).y = Rnd() * ScrnHight pColor(j) = GetPixel(hDC1, pData(j).x, pData(j).y) Next End Sub Private Sub Form_Unload(Cancel As Integer) ReleaseDC 0, hDC1 '释放桌面窗口设备句柄 InvalidateRect 0, rect1, 0 '清除所有雪花,恢复桌面 End Sub Private Sub Timer1_Timer() DrawP '画出一帧 End Sub Private Sub Timer2_Timer() '改变风向 Vx = Rnd() * 4 - 2 Vy = Rnd() + 2 End Sub '完,最后,需要两个Timer:Timer1、Timer2。
VB
16,555
社区成员
110,528
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章