Это мой первый пост на этом форуме, пожалуйста, не ругайте меня, если я разместил его не в том месте или сделал что-то не так, я очень редко пишу на форумах. Итак, у меня есть проблема с функцией GetPixel. По сути, он должен возвращать десятичное значение цвета в точках x, y. Код, который я собираюсь опубликовать, отлично работает на 32-битной Windows 7, но недавно я купил новый ноутбук y50-70 с 64-битной Windows 8.1, и тот же код работает совершенно по-другому. Не могу найти решения проблемы, даже описать не могу. Я думаю, это может иметь какое-то отношение к дескриптору рабочего стола, HDC, GetDC(), GetPixel(), может быть, даже к разрешению моего компьютера, частоте обновления или чему-то подобному... Я даже записал несколько видеороликов, которые могут помочь вам понять у меня проблема, потому что я даже не могу ее правильно описать. Это похоже на то, что настоящий цвет - это x = 219, y = 407 от того места, куда указывает моя мышь. Новому ноутбуку 3 недели, я даже пытался 1 раз сделать восстановление системы, но это не решило проблему.
Не стесняйтесь использовать этот код, надеюсь, он будет работать нормально для вас:
#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 https://youtu.be/UcneHwXaGoM
Если бы кто-нибудь мог хоть как-то помочь или подсказать, что делать, куда идти, я был бы очень и очень признателен. Одна из основных причин, по которой я начал программировать, заключается в том, что что-то вроде этого, работа с цветами, условиями и т. д., и теперь я не могу продвинуться дальше, что очень печально. Надеюсь услышать ответ. Спасибо.
GetDC
из-за пределов цикла и переместитьReleaseDC
в цикл. - person Mark Ransom   schedule 16.04.2015