文档库 最新最全的文档下载
当前位置:文档库 › VB获取鼠标位置的颜色值

VB获取鼠标位置的颜色值

VB获取鼠标位置的颜色值
VB获取鼠标位置的颜色值

VB获取鼠标位置的颜色值:

界面如下:

代码如下:

Option Explicit

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _

ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, _

ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _

ByVal y As Long) As Long

Private Type POINTAPI

x As Long

y As Long

End Type

Private Sub Form_Load()

End Sub

Private Sub Timer1_Timer()

Dim a As POINTAPI, Myhwnd As Long, MyDC As Long, r1 As Long GetCursorPos a

MyDC = GetDC(Myhwnd)

r1 = GetPixel(MyDC, a.x, a.y)

If r1 = -1 Then

BitBlt Picture1.hdc, 0, 0, 1, 1, MyDC, a.x, a.y, vbSrcCopy

r1 = Picture1.Point(0, 0)

Else

Picture1.PSet (0, 0), r1

End If

Me.Caption = "RGB= " + Hex$(r1)

Picture1.BackColor = r1 End Sub

Private Sub Command1_Click()

Unload Me

End Sub

运行效果如下:

获取当前鼠标所在的窗口句柄

用到的API函数: GetCursorPos 基本信息 函数功能:该函数检取光标的位置,以屏幕坐标表示。 函数原型:BOOL GetCursorPos(LPPOINT lpPoint); 参数: IpPoint:POINT结构指针,该结构接收光标的屏幕坐标。 使用时要先定义一个数据结构: Public Type POINTAPI x As Long y As Long End Type 例如: dim biao as POINTAPI GetCursorPos biao 那么biao.x用来存放当前光标的x轴坐标,biao.y用来存放当前y轴的坐标。 返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。 备注: 1.光标的位置通常以屏幕坐标的形式给出,它并不受包含该光标的窗口的映射模式的影响。该调用过程必须具有对窗口站的WINSTA_READATTRIBUTES访问权限。 2.此函数为api函数,调用时要函数声明:Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long 速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。 WindowFromPoint 函数功能:该函数获得包含指定点的窗口的句柄。 函数原型:HWND WindowFromPoint(POINT Point); 参数:

Point:指定一个被检测的点的POINT结构。 返回值S:返回值为包含该点的窗口的句柄。如果包含指定点的窗口不存在,返回值为NULL。如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄。 备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用ChildWindowFromPoint函数进行无限制查询,这样就可以获得静态文本控件的句柄。 速查:Windows NT:3.1以上版本:Windows:95以上版本;Windows CE:1.0以上版本:头文件:Winuser.h;库文件:user32.lib。 获取当前鼠标所在的窗口句柄代码: POINT pNow = {0,0}; If (GetCursorPos(&pNow)) { HWND hwndPointNow = NULL; hwndPointNow = WindowFromPoint(pNow); if (hwndPointNow) cout <<“Success!!”<< endl; else cout <<“Error!!”<< endl; } else cout <<“Error!!”<< endl;

大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击脚本

大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击 脚本 一、准备工作 第一步:下载大漠插件、解压,运行“注册大漠插件到系统.bat”,把全部东东都复制到按键精灵的plugin目录下吧~ 第二步:创建一个文件夹,以d:\test 为例。把你要找的图(60.bmp)、大漠插件里的dm.dll 和RegDll.dll复制到这个文件夹。 第三步:打开按键精灵,创建一个新脚本。往附件(在软件左边框选项)里面添加dm.dll、Reg.dll和图60.bmp 二、复制以下代码到按键精灵 dim ys1,ys2,ys3,a,b,zbx,zby//自定义变量 ys1=9000//1和2点延时 ys1=9000//2和3点延时 ys1=9000//3和1点延时 a=15//纵向下移15单位 b=-15//纵向上移15单位 zbx=100//获取窗口句柄给定的坐标x zby=100//获取窗口句柄给定的坐标y PutAttachment "d:\test", "*.*" //意思是释放所有附件到d:\test目录。就是把有用的文件打包到test目录下 PutAttachment ".\Plugin", "RegDll.dll" //意思是释放RegDll.dll文件到按键精灵安装目录的Plugin目录下,用来完成大漠插件的注册 Call Plugin.RegDll.Reg("d:\test\dm.dll") //调用大漠插件,在按键精灵中使用 Set dm = createobject("dm.dmsoft") //用大漠插件创建一个对象dm dm_ret = dm.SetPath("d:\test") // 设置全局路径,以后你找图用的图片都默认是test目录里的图片了,否则你要用绝对路径d:\test\1.bmp来该表示图片 dm_ret = dm.LoadPic("*.bmp") // 字面意思是加载test目录下的所有图片 Hwnd = dm.GetPointWindow(zbx,zby)//用大漠软件获取给定坐标(zbx,zby)的窗口句柄,保存在Hwnd里 Call Plugin.Window.Move(Hwnd, 0, 0) // 把窗口移到屏幕的(0,0),即左上角 dm_ret = dm.BindWindow(Hwnd,"gdi","windows","windows",0) //这句用来绑定辅助操作的对象窗口 //下面是一条判断语句,如果绑定失败就会提示。那就从前面几几步中找原因吧 Delay 10 If dm_ret = 1 Then Else MessageBox "绑定失败,重启脚本或联系作者" EndScript

NGUI里面怎么得到鼠标当前所点击的物体

NGUI里面怎么获得当前鼠标点击的对象 当我们使用unity3d的插件NGUI时会遇到编辑界面有多个UI对象,有时我们需要根据点击的对象来执行不同的操作,但是我们怎么才能得到当前鼠标所点击的UI对象?进一步来说该问题就等价于怎么实现当我们的鼠标点击相应的UI对象时输出该UI对象的名字。下面就来看看怎么实现(本人再网上也看了很多方法,但是对于NGUI来说等于是达到本人需要的5%,于是在自己的摸索下通过UICamera.SelectedObject的属性终于解决了,现与大家分享) 实验的目的:通过点击四个不同的UI组件,输出不同的内容 实验软件版本:unity3d各版本 实验步骤: 第一步:先在我们的Scene窗口随便创建几个UI,在这里我只是创建了四个一个是头像表情命名为“Sprite3”;两个Input的输入框分别是“1”,“2”;还有一个是label 标签 第二步:为各个UI添加BoxCollider组件,由于Input已具有Boxcollider组件所以不用添加第三步:我们需要明确我们需要得到的组件名字;然后在代码中使用 第四步:在U3d里面创建一个脚本,名字随便;然后在脚本中输入以下代码: //在这里只说明精灵和标签,另两个输入框只需要按照同样的方法 //声明赋值即可 GameObject a; GameObject b; Void Start() { a=GameObject.Find(“Sprite3”); b=GameObject.Find(“Label4”); } Void Update() { //UICamera.selectedObject在NGUI手册中原以为手动选择对象 //其实就是鼠标点击的对象,它的声明是 // GameObjectUICamera.selectedObject即返回的是一个对象 //所以通过下面方法可以确定我们的点击对象并输出

STM32-USB鼠标解析

一、USB的“JoyStickMouse”例程结构分析 1、例程的结构 (1)底层结构 包括5个文件:usb_core.c(USB总线数据处理的核心文件),usb_init.c,usb_int.c(用于端点数据输入输入中断处理),usb_mem.c(用于缓冲区操作),usb_regs.c(用于寄存器操作)。它们都包含了头文件“usb_lib.h”。在这个头文件中,又有以下定义: #include "usb_type.h" #include "usb_regs.h" #include "usb_def.h" #include "usb_core.h" #include "usb_init.h" #include "usb_mem.h" #include "usb_int.h" usb_lib.h中又包含了七个头文件,其中usb_type.h中主要是用typedef为stm32支持的数据类型取一些新的名称。usb_def.h中主要是定义一些相关的数据类型。 还有一个未包含在usb_lib.h中的头文件,usb_conf.h用于USB设备的配置。(2)上层结构 上层结构总共5个文件:hw_config.c(用于USB硬件配置)、usb_pwr.c(用于USB连接、断开操作)、usb_istr.c(直接处理USB中断)、usb_prop.c(用于上层协议处理,比如HID协议,大容量存储设备协议)、usb_desc.c(具体设备的相关描述符定义和处理)。 可见,ST的USB操作库结构十分清晰明了,我先不准备直接阅读源代码。而是先利用MDK的软件模拟器仿真执行,先了解一下设备初始化的流程。 2、设备初始化所做的工作 (1)Set_System(void) 这个是main函数中首先调用的函数,它位于hw_config.c文件中。它的主要功能是初始化时钟系统、使能相关的外围设备电源。 配置了JoyStickMouse所用到的5个按键,并且配置了两个EXTI中断,一个是用于把USB从挂起模式唤醒,还有一个用途未知。 (2)USB_Interrupts_Config(); 这个是main函数中调用的第二个函数,它也位于hw_config.c文件中。主要功能是配置USB所用到的中断。 跟踪到代码中,主要设配置了USB低优先级中断和唤醒中断,又有一个EXTI 中断功能未知。 (3)Set_USBClock() 这个是main函数中调用的第三个函数,它也位于hw_config.c文件中。它的功能是配置和使能USB时钟。 (4)USB_Init(void) 这个是main函数中调用的第四个函数,它也位于usb_init.c文件中。它初始化了三个全局指针,指向DEVICE_INFO、USER_STANDARD_REQUESTS 和DEVICE_PROP结构体。 后面两个是函数指针结构体,里面都是USB请求实现、功能实现的函数指针。

API 鼠标坐标获取

效率就是你了解的类库。每天学习一点点。 c# private void Form1_MouseMove(object sender, MouseEventArgs e) { this.Text = Cursor.Position.X.ToString() + ":" + Cursor.Position.Y.ToString(); } 调用API using System; using System.Collections.Generic; using https://www.wendangku.net/doc/a97794065.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace mouse { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public delegate int HookProc(int ncode, IntPtr wParam, IntPtr lParam); static int hHook = 0; public const int WH_MOUSE = 7; //private System.Windows.Forms.Button button1; //Declare MouseHookProcedure as HookProc type. HookProc MouseHookProcedure; //Declare wrapper managed POINT class. [StructLayout(LayoutKind.Sequential)] public class POINT { public int x; public int y; }

JavaScript 获取鼠标点击位置坐标

JavaScript 获取鼠标点击位置坐标 在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊声明代码在IE8,FireFox,Chrome下进行测试兼容 鼠标点击位置坐标相对于屏幕 如果是涉及到鼠标点击确定位置相对比较简单,获取到鼠标点击事件后,事件screenX,screenY获取的是点击位置相对于屏幕的左边距与上边距,不考虑iframe因素,不同浏览器下表现的还算一致。function getMousePos(event) { var e = event || window.event; return {'x':e.screenX,'y':screenY} } 相对浏览器窗口 简单代码即可实现,然而这是还不够,因为绝大多数情况下我们希望获取鼠标点击位置相对于浏览器窗口的坐标,event的clientX,clientY属性分别表示鼠标点击位置相对于文档的左边距,上边距。于是类似的我们写出了这样的代码function getMousePos(event) { var e = event || window.event; return {'x':e.clientX,'y':clientY} } 相对文档 简单测试也没什么问题,但是clientX与clientY获取的是相对于当前屏幕的坐标,忽略页面滚动因素,这在很多条件下很有用,但当我们需要考虑页面滚动,也就是相对于文档(body 元素)的坐标时怎么办呢?加上滚动的位移就可以了,下边我们试试怎么计算页面滚动的位移。 其实在Firefox下问题会简单很多,因为Firefox支持属性pageX,与pageY属性,这两个属性已经把页面滚动计算在内了。 在Chrome可以通过document.body.scrollLeft,document.body.scrollTop计算出页面滚动位移,而在IE下可以通过document.documentElement.scrollLeft ,document.documentElement.scrollTop function getMousePos(event) { var e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollY = document.documentElement.scrollTop || document.body.scrollTop; var x = e.pageX || e.clientX + scrollX; var y = e.pageY || e.clientY + scrollY; //alert('x: ' + x + '\ny: ' + y); return { 'x': x, 'y': y }; } getBoundingClientRect() 来获取页面元素的位置

VB获取鼠标位置的颜色值

VB获取鼠标位置的颜色值: 界面如下: 代码如下: Option Explicit Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, _ ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long ‘API Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _ ByVal y As Long) As Long

Private Type POINTAPI x As Long y As Long End Type Private Sub Form_Load() End Sub Private Sub Timer1_Timer() Dim a As POINTAPI, Myhwnd As Long, MyDC As Long, r1 As Long GetCursorPos a MyDC = GetDC(Myhwnd) r1 = GetPixel(MyDC, a.x, a.y) If r1 = -1 Then BitBlt Picture1.hdc, 0, 0, 1, 1, MyDC, a.x, a.y, vbSrcCopy r1 = Picture1.Point(0, 0) Else Picture1.PSet (0, 0), r1 End If Me.Caption = "RGB= " + Hex$(r1)

C# 获取和设置鼠标坐标

C# 获取和设置鼠标坐标运行界面: 代码: using System; using System.Collections.Generic; using https://www.wendangku.net/doc/a97794065.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices;// namespace mouseTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ///

///设置鼠标的坐标 /// ///横坐标 ///纵坐标 [DllImport("User32")] public extern static void SetCursorPos(int x, int y); /// ///获取鼠标的坐标

///

///传址参数,坐标point类型 ///获取成功返回真 [DllImport("User32")] public extern static bool GetCursorPos(ref Point lpPoint); Point p = new Point(1, 1);//定义存放获取坐标的point变量 private void button_go_Click(object sender, EventArgs e) { timer1.Start(); SetCursorPos(int.Parse(textBox_x.Text), (int.Parse(textBox_y.Text))); } private void timer1_Tick_1(object sender, EventArgs e) { GetCursorPos(ref p); label_p.Text = "X:" + p.X + "\r\nY:" + p.Y; if (Convert.ToInt16(p.X) > 560 && Convert.ToInt16(p.X) < 680 && Convert.ToInt16(p.Y) > 350 && Convert.ToInt16(p.Y) < 460) pictureBox1.Visible = true; else pictureBox1.Visible = false; } } } 源代码下载地址:https://www.wendangku.net/doc/a97794065.html,/s/1jG9mqY6

第三章常见的鼠标键盘交互方法

TrackBall模式 Trackball模式是跟踪球模式,具体来说,就是物体的中心位置不变,而改变视点的位置,从而使模型随着鼠标的移动绕着中心位置旋转。 对于鼠标移动需要计算相应的视点(照相机)的运动情况,在osg中,通过TrackballManipulator::calcMovement()来实现,并且对于不同的鼠标事件,分别进行如下的操作: 1.按下鼠标的左键,则旋转照相机。 2.按下鼠标中间键或者同时按下鼠标的左键和与右键,则改变物体的中心位置,也即对物体进行平移操作。 3.按下鼠标的右键,则对模型进行缩放。 在按下鼠标的左键从而旋转照相机时,这里主要模拟了一个跟踪球技术,球的半径理想情况下应该基于旋转中心到鼠标所指的物体上某点的距离,但是为了简化处理,一般情况下,球的半径TRACKBALLSIZE可以预先给定,也能达到比较好的模拟效果。具体实现过程如下:首先分别记录两次鼠标事件的坐标的(x1,y1)和(x2,y2),根据x坐标的最小值X min和最大值X max,以及y坐标的最小值Y min和最大值Y max,对(x1,y1)和(x2,y2)坐标进行规范化,转化到(-1,1)之间,不妨假设新的坐标点为p1和p2,然后通过将p1和p2投影到跟踪球上,从而获取相应的z 坐标。这样,以球的中心为起始点,计算出的球上的两个点为终点,可以确定两个向量,不妨记作P1和P2,那么旋转轴axis = P2^ P1,旋转的弧度为:t = ||(P2- P1)|| / (2.0*TRACKBALLSIZE),为了避免产生某些不可操纵的结果,必须先将t规范到(-1,1)之间,再将其转化为角度angles,然后将照相机绕着axis旋转angles的角度,从而实现了对照相机的旋转操作。 在osg的实现中,该跟踪球并不是一个正规的球体,而是进行了一定的变形,在中心附近是一个半径为TRACKBALLSIZE的球体,而在离中心达到一定距离时(小于球的半径TRACKBALLSIZE),该球体被扭曲成了四个双曲面。 在Trackball模式的具体实现时,有许多细节问题,如 1.首先需要将世界坐标系转化到视点坐标系,这可以通过先将中心平移到视点后根据照相机的up、物体的中心以及视点重新确立坐标系。在osg中,由void TrackballManipulator::computePosition(const osg::Vec3& eye,const osg::Vec3& center,const osg::Vec3& up)实现。 2.模型的旋转通过鼠标控制,因此需要判断鼠标是否移动,具体实现时,可以预先自定义一个速率v,分别记录下连续两次鼠标事件的时间和位置,计算出间隔的时间?t和移动的距离?s,如果?s > v * ?t,就可以认为鼠标移动,并根据鼠标的具体事件(如按下的是左键、右键等)进行相应的操作。在osg中,由bool TrackballManipulator::isMouseMoving()实现。 3.需要有一个函数接收不同的鼠标和键盘事件,从而做出相应的处理。在osg中,由bool TrackballManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us)实现,如果事件被正确处理,返回true,否则返回false。其中GUIEventAdapter接受来自GUI的更新事件,GUIActionAdapter则是对这些GUI事件的回应。 Quaternion The quaternions are members of a noncommutative division algebra first invented by William Rowan Hamilton. The idea for quaternions occurred to him while he was walking along the Royal

如何在Matlab中的用户界面中取得鼠标坐标

如何在Matlab中创建用户界面(GUI)的相关帮助请参见:MA TLAB-->Creating Graphical User Interfaces 下面举例如何在用户界面中取得鼠标点击时的坐标。 1.创建一个简单的GUI a)在MA TLAB命令行敲入“guide”,可以看到下面的对话框 b)选择GUI with Axes and Menu后,点击“OK”。

c)将它另存为TestFig.fig d)此时MA TLAB会自动生成一个TestFig.m文件,回头我们要修改其中的代码,现 在先不管它。 e)回到TestFig.fig界面,可以点击右上角的绿色三角按钮,看看运行情况。

2.为按钮设置被点击后执行的代码 a)找到点击Update按钮后执行的代码:用鼠标右击Update按钮后,选择View Callbacks Callback。

此时MA TLAB自动定位到该按钮被按下后执行的代码处。 b)我们现在修改掉原来的行为,变成记录下用户每次点击鼠标的坐标(用ginput这

个函数可以获得鼠标的坐标),并在界面上画出每个点。 i.我们首先删除这些代码(或者用百分号%注释掉这些代码) popup_sel_index = get(handles.popupmenu1, 'Value'); switch popup_sel_index case 1 plot(rand(5)); case 2 plot(sin(1:0.01:25.99)); case 3 bar(1:.5:10); case 4 plot(membrane); case 5 surf(peaks); end ii.然后在cla;这句代码后面加上下面的代码 % we use points[x, y] to store each point points = []; pointNum = 0; % we want to show all points on the same fig hold on; % we also want to fix the region in which points are located axis([0 1 0 1]); % 1,2,3 means left, middle, right mouse button is clicked button = 1; while(button ~= 3) % user use right click to input the last point % use ginput to get graphical input from mouse [x, y, button] = ginput(1); % plot the point plot(x,y,'bo'); % save pointNum = pointNum + 1; points(pointNum, :) = [x y]; end disp(['These points are stored:']); disp(points); 完成后像这个样子

JavaScript 获取鼠标点击位置坐标

一、获得的坐标值相对于body时 获得鼠标的坐标值----当需求为获得的坐标值相对于body时

二、获取指导区域鼠标点击位置坐标 获得鼠标的坐标值----当需求为获得的坐标值相对于某一对象时

ID名为objId的对象