這是我在這個論壇上的第一篇文章,如果我沒有發佈在正確的地方或者如果我做錯了什麼,請不要在論壇上發帖許多。所以,我有GetPixel函數的這個問題。基本上,它應該返回x,y處的顏色小數。我即將發佈的代碼在Windows 7 32bit上完美工作,但最近我購買了新的筆記本電腦y50-70與Windows 8.1 64位和相同的代碼完全不同。我找不到解決問題的辦法,甚至無法形容。我認爲這可能與桌面處理,HDC,GetDC(),GetPixel(),甚至與我的電腦分辨率,刷新率或類似的東西有關......我甚至錄製了一些視頻,可以幫助您瞭解我遇到的問題,因爲我甚至無法正確描述它。它就像真正的顏色是x = 219,y = 407遠離我的鼠標指向的地方。新的筆記本電腦是3周大,我甚至試圖做系統恢復1次,但這並沒有解決問題。GetPixel返回不正確的值
隨意使用此代碼,希望它會正常工作對您:
#include <iostream>
#include <Windows.h>
using namespace std;
void Detect();
int main()
{
Detect();
return 0;
}
void Detect()
{
POINT p;
HDC hDC = GetDC(0);
int x, y;
while (!GetAsyncKeyState(VK_INSERT)) // Press insert to stop
{
GetCursorPos(&p);
x = p.x;
y = p.y;
hDC = GetDC(0);
cout << x << " " << y << " " << GetPixel(hDC, x, y) << endl;
Sleep(50);
}
ReleaseDC(0, hDC);
}
鏈接下面的問題: https://youtu.be/q2H2M8WLHVI
如果任何人都可以至少幫助好歹告訴什麼要去哪裏,我會非常非常欣賞它。我開始編程的主要原因之一是因爲類似的東西,使用顏色,條件等......現在我不能進一步提高,這真的很難過。希望聽到回覆。謝謝。
我不認爲這是這個問題,但你應該從循環外部移除'GetDC'並將'ReleaseDC'移到循環中。 –
謝謝。我會將ReleaseDC添加到循環中,並且爲什麼我在外部添加GetDC的原因是因爲它是未定義的,使用VisualStudio 2013,但這不是主要問題的解決方案。 –