vb用getpixel屏幕取色的几个问题

author author     2023-04-28     626

关键词:

1.GetPixel取色的坐标单位是像素吗?那对于不同分辨率的屏幕要想取同一个点的颜色怎么办?
2.用的GetDC 和GetPixel等API在屏幕取色 不知道为什么有的时候可以 但是偶尔会出错 返回-1,这是怎么回事?(我是对一个全屏运行的网络游戏取色。。。)
3.对于硬盘上的jpg图片,要用什么API可以对指定的点取色?得是在游戏全屏运行的时候也能取到的,像point,GetPixel这种如果程序窗口置顶可以取到,但是游戏全屏运行就取不到了。。哪位高手教下我,多谢了!如果能给我一段符合我要求的代码(最好有注释) 再追加50分

我不是太明确你第一个问题的意思。我的理解是你要对屏幕的某个目标进行取色。问题是如何确认这个目标的位置。如果目标是固定的坐标或者在固定的屏幕比例中出现,那么直接针对的计算坐标来取色即可。但我想你希望的是对一个不固定的坐标取色。那么多半是窗口坐标,这样的话可以获取窗口的DC来取色。总的来说,你必须确立一个参照坐标。
2,出错是因为并不是所有DC都支持GetPixel 和 SetPixel。例如win7的很多窗体,Java程序的窗体。不过DirectX的窗体好像是可以的。因为这个原因,考虑到兼容性需要,我往往是使用BitBlt来对一个像素点截屏再进行取色。一般来说BitBlt 不会让效率降低太多。可能几十倍而已,几千几百个点的话可以忽略。如果你是对大范围取色,BitBlt会比GetPixel更有效率。
3.读取jpg需要使用一些解码包会比较好,因为jpg的结构相当复杂,自己写代码会非常费事,事实上,我对JPG的结构还挺熟悉,但从来不敢想象自己写一个关于他的解压包。如果你是懒得找包的话,给你一个不太好的但可以处理的办法:使用JNI(Java native interface),他可以用作java 和c之间的界面, 由jdk自带。你可以在C里调度Java。java的 ImageIO.read(File file);方程可以直接读取bmp gif jpg 和 png 文件。读出来的BufferedImage 可以直接获取像素资料,但是效率不高,你可以从BufferedImage对象中获取 WritableRaster,然后获取DataBuffer 最后是直接的 byte 或者 int 数组数据。但是,前提是你要会JNI,同时JNI在C中调度Java的代码也是非常糟糕的,代码效率还可以,但代码会极度难看。如果真的决定使用JNI,那我建议你先用Java写一个 byte[] readJPG(String path);的方程然后再C调度这个方程获取 byte 数组,而不是直接从C调用ImageIO.read(),这样会省事非常多
但还是建议找C的解码包。给代码是不可能的,我原意话10分钟来回答问题,但不太原意话1小时来写代码。而且自己寻找答案会获得和学习更多。

最后如果你想要做的是图像识别,可以说jpg图片不是很好的选择,因为那是一种会丢失数据的文件格式,你用点对点的精确识别方法肯定(99.9999%)不能识别出图片。用模糊识别是要有很好的技术知识同时效率也会降低。建议使用BMP作为识别图片。BMP的解码包和源码网上一大堆。追问

大哥,一看你就是专业的,能给我大概说说怎么用BitBlt 取色么?我用GetPixel 确实在win7下失效。。。

参考技术A 游戏有保护取不到颜色

delphi如何获取鼠标当前位置颜色

delphi如何获取鼠标当前位置颜色使用这个函数,COLORREFGetPixel(HDChdc,//handletoDCintnXPos,//x-coordinateofpixelintnYPos//y-coordinateofpixel);可以调用之前调用GerCursorPos来获取鼠标在屏幕上的位置,如果仅仅是为了取色的话,桌面窗口的HDC的获取... 查看详情

GDI GetPixel() 有更快的替代方案吗?

】GDIGetPixel()有更快的替代方案吗?【英文标题】:IsthereafasteralternativetoGDIGetPixel()?【发布时间】:2011-05-1306:03:56【问题描述】:我在.NET应用程序中使用来自gdi32.dll的GetPixel()对屏幕上任意位置的像素颜色进行采样。它工作正常,... 查看详情

如何用delphi编程获取其他程序窗口内的象素颜色信息等?

...口内的象素颜色信息等?参考技术A使用这个函数,COLORREFGetPixel(HDChdc,//handletoDCintnXPos,//x-coordinateofpixelintnYPos//y-coordinateofpixel);可以调用之前调用GerCursorPos来获取鼠标在屏幕上的位置,如果仅仅是为了取色的话,桌面窗口的HDC的获... 查看详情

win10下,takecolor取色器错位指针偏移问题解决方法

当win10的屏幕缩放比例不是100%时,屏幕取色器ColorPix指针会发生偏移解决:1.右击—>属性—>兼容性2.勾选"高DPI缩放替代" 查看详情

如何使用python制作一款屏幕颜色提取器,附带exe文件(代码片段)

目录0使用效果1所需python包2python小技巧2.1控件数组2.2将控件作为属性2.3怎样重设控件颜色2.4一些用到的字符串操作2.5鼠标位置像素颜色2.6窗口始终置顶2.7文本框不允许编辑但允许复制3完整代码4exe文件包0使用效果如下面动图所示... 查看详情

如何使用python制作一款屏幕颜色提取器,附带exe文件(代码片段)

目录0使用效果1所需python包2python小技巧2.1控件数组2.2将控件作为属性2.3怎样重设控件颜色2.4一些用到的字符串操作2.5鼠标位置像素颜色2.6窗口始终置顶2.7文本框不允许编辑但允许复制3完整代码4exe文件包0使用效果如下面动图所示... 查看详情

unity实现鼠标拾取电脑屏幕指定区域像素点颜色(代码片段)

...及知识点1、前言2、知识点👉二、实现鼠标拾取电脑屏幕指定区域像素颜色1、准备工作2、使用.Net类库System.Drawing截取图像并转为Unity支持的纹理图像Texture3、需要注意的点👉三、集成到ColorPicker插件源代码中完成取色笔... 查看详情

讲棋鼠标变吸管的软件叫啥软件

参考技术A讲棋鼠标变吸管的软件叫FastStoneCapture软件。首先打开FastStoneCapture软件,单击设置按钮,单击屏幕颜色取色,鼠标光标会变成一个吸管的样子,用该吸管点击要取色的位置,即可获得此点的颜色参数。 查看详情

如何禁用深色透明色的背景视图?

...color?【发布时间】:2015-02-1413:25:26【问题描述】:我为从屏幕底部滑动的uiview创建了动画,但我希望在视图滑动到屏幕后禁用bg视图并使用这样的深色bg:我该怎么做?此外,当我点击深色透明视图时,我希望它滑出并启用bg视图... 查看详情

屏幕取色

代码:[code=delphi]unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls,ExtCtrls;type TForm1=class(TForm)   Button1:TButton;   Timer1:TTimer;   Edit1:TEdit;   procedu... 查看详情

比 GetPixel() 快吗?

】比GetPixel()快吗?【英文标题】:FasterthanGetPixel()?【发布时间】:2014-12-3021:06:42【问题描述】:如何将GetPixel()替换为更快的东西?目前我正在使用:temp=GetPixel(hMonitor,1,1);if(pixelArray[0]!=temp)pixelArray[0]=temp;counter++;以上代码只是一... 查看详情

单色位图SetPixel/GetPixel问题... Win32 C代码

】单色位图SetPixel/GetPixel问题...Win32C代码【英文标题】:MonochromeBitmapSetPixel/GetPixelproblems...Win32CCode【发布时间】:2010-12-1303:08:26【问题描述】:这是我的一些位掩码代码(单色位图)。Bitmask_Create()函数没有问题。我已经通过打开... 查看详情

最好用的取色器,颜色转换器

...t;将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC</param>///<returns>指定窗口的设备场景句柄,出错则为0</returns>[DllImport("user32.dll")]publicstaticexternIntPtrGetDC(IntPtrhwnd);///<summary>///释放由调用GetDC函数获... 查看详情

从 Android.Graphics.Bitmap.GetPixels 获得的 RGB 值与 System.Drawing.Bitmap.GetPixel 略有不同

】从Android.Graphics.Bitmap.GetPixels获得的RGB值与System.Drawing.Bitmap.GetPixel略有不同【英文标题】:RGBvaluesobtainedfromAndroid.Graphics.Bitmap.GetPixelsareslightlydifferentfromSystem.Drawing.Bitmap.GetPixel【发布时间】:2015-03-3020:36:18【问题 查看详情

按钮图像看起来是反色的

】按钮图像看起来是反色的【英文标题】:Buttonimagelookswithinvertedcolors【发布时间】:2016-10-0511:15:16【问题描述】:我有一个按钮,上面有我这样设置的图像playPauseAudioBtn.setImage(UIImage(named:"icon-play-video"),forState:.Normal)但是用反色看... 查看详情

as3中bitmapdata.getpixel32获取png图片颜色

bitmapdata.setPixel(i,j,bitmap.bitmapData.getPixel32(int(i*(bitmap.width/200)),int(j*(bitmap.height/bitmaph))))这是个for循环PNG图片的像素,修改过后用PNGEncoder.as转换后。保存的图片好像不是透明的了。。透明处变成黑色的了。。问题出在哪里呢。两处可... 查看详情

android12取色引擎相关问题

...和二次加工。很可惜,Google并没有为动态壁纸提供默认的取色逻辑。壁纸的取色,最终会调用到WallpaperService的onComputeColors中,但该方法是空实现,框架只是提供了最基本的获取接口而已。所以在Android12之前,无论是静态壁纸或... 查看详情

网格最近邻 BFS 慢

...种方式用相应的像素填充上采样版本。伪代码:upsampled.getPixel(((int)(x*factorX),(int)(y*factorY)))=old.getPixel(x,y)结果,我最终得到了未完全填充的位图,我尝试用它最近填充的邻居填 查看详情