vb getpixel函数的问题,哪位大侠知道请告诉我!妈妈说标题要长……

问题如下:窗体上有两个形状,我用midx和midy表示这两个形状连线的中心的位置。窗体上是有背景图画的,我要想实现用getpixel函数获取这个中心点处的颜色值。但是不知... 问题如下:
窗体上有两个形状,我用midx和midy表示这两个形状连线的中心的位置。窗体上是有背景图画的,我要想实现用getpixel函数获取这个中心点处的颜色值。
但是不知道为什么,s的值是-1,颜色无法取到,label1的背景颜色不变。
还有就是me.hwnd的值每次都会变(小弟对句柄从未接触,是不是每次运行系统都会给窗体一个随机的句柄?)。
代码如下:
Private Sub Command1_Click()
midx = Val(((Shape1.Left) + (Shape2.Left)) / 2)
midy = Val(((Shape1.Top) + (Shape2.Top)) / 2)
s = GetPixel(Me.hwnd,midx,midy)

r = Val(a) And &HFF '分离出红色
g = (Val(a) And 65280) \ 256 '分离出绿色
b = (Val(a) And &HFF0000) \ 65536 '分离出蓝色
Label1.BackColor = RGB(r, g, b)
End Sub
展开
 我来答
乐游原上的歌者
2011-10-06 · TA获得超过383个赞
知道小有建树答主
回答量:278
采纳率:71%
帮助的人:254万
展开全部
不用API看看
Private Sub Command1_Click()
Dim midx As Long
Dim midy As Long
Dim s As Long
Dim r As Long
Dim g As Long
Dim b As Long
midx = Val(((Shape1.Left) + (Shape2.Left)) / 2)
midy = Val(((Shape1.Top) + (Shape2.Top)) / 2)

s = Form1.Point(midx, midy)
r = s Mod 256 '分离出红色
g = (s \ 256) Mod 256 '分离出绿色
b = s \ 256 \ 256 '分离出蓝色
Label1.BackColor = RGB(r, g, b)
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七终多E
2011-10-05 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3756
采纳率:46%
帮助的人:3703万
展开全部
你为什么不获取背景图片的那个对象 然后获取背景的长宽然后取得中间点的像素啊 me.hwnd值的是窗体 不一定就包含那个背景的
追问
可以给出代码吗,给出这分数就给你了!
我的背景图是设置成窗体的背景图,难道这个也有句柄?
追答
已经改好了 发到你的QQ邮箱了  没有做太大的改动 在虚拟机里面做的VB 在WIN7下面能运行 显示的颜色 是你的那个标题上的像素的颜色
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式