Пиксели на экране.

 
0
 
C++
ava
CWD | 16.03.2013, 23:52
Добрый день! Подскажите есть ли какая-то зависимость между местом пикселя и разрешением экрана? Например если нужный пиксель при разрешении 1440 на 900 находится на позиции (100,150), то где этот пиксель будет находится при разрешении 1600 на 900? Спасибо.
Comments (11)
ava
volatile | 16.03.2013, 23:38 #
там же и будет.

вообще вопрос не верный. если вы имеете ввиду пикселы которые рисует, например, видеоплеер, растягивающий изображение на весь экран, то пикселы будут уже не там  smile 
ava
CWD | 17.03.2013, 00:49 #
volatile, Я подразумевал второй вариант. Как можно вычислить зависимость?
ava
Dem_max | 17.03.2013, 05:21 #
ТС
Что у тебя не совпадает ?????
Может у тебя в настройках винды стоит увеличенный масштаб ????
ava
CWD | 12.04.2013, 21:55 #
Попробую обьяснить проблему.

Вот например есть код


#define MAX_HEIGHT 620
#define MAX_WIDTH 1440

bool A::IsIt(int x, int y, DWORD z)
{
    DWORD DWORD1;
    window = GetDesktopWindow();
    GetWindowRect(window, &windowRect);
    int bitmap_dx = windowRect.right-windowRect.left;
    int bitmap_dy = windowRect.bottom-windowRect.top;
    BITMAPINFOHEADER &bmpInfoHeader = info.bmiHeader;
    bmpInfoHeader.biSize = sizeof(bmpInfoHeader);
    bmpInfoHeader.biWidth = MAX_WIDTH;
    bmpInfoHeader.biHeight = MAX_HEIGHT;
    bmpInfoHeader.biPlanes = 1;
    bmpInfoHeader.biBitCount = 32;
    bmpInfoHeader.biCompression = BI_RGB;
    bmpInfoHeader.biSizeImage = bmpInfoHeader.biWidth*bmpInfoHeader.biHeight*(bmpInfoHeader.biBitCount/8);
    bmpInfoHeader.biXPelsPerMeter = 0;
    bmpInfoHeader.biYPelsPerMeter = 0;
    bmpInfoHeader.biClrUsed = 0;
    bmpInfoHeader.biClrImportant = 0;
    HDC winDC = GetWindowDC(window);
    HDC bmpDC = CreateCompatibleDC(winDC);
    HBITMAP bitmap = CreateDIBSection(winDC, &info, DIB_RGB_COLORS, (void**)&bitPointer, NULL, 0);
    SelectObject(bmpDC, bitmap);//Выбираем в контекст битмэп
    BitBlt(bmpDC, 0, 0, MAX_WIDTH, MAX_HEIGHT, winDC, 0, 0, SRCCOPY);
    DWORD1 = GetPixel(winDC,x,y);
    DeleteObject(bitmap);
    DeleteObject(bmpDC);
    ReleaseDC(window, winDC);
    if (DWORD1 == z) {return true;} else {return false;}
}


Функция проверяет есть ли в заданной точке пиксель опредленного цвета.

Так вот использую эту функцию при разрешении 1440 на 990 выбирая три точки A(1406,450), B(968,644), C(67,644).
А при разрешении 1360 на 768 точки оказываются в других местах A(1326,450), B(888,552), C(67,552). Тоесть смещается по кординатам на 80 и 92. Какова закономерность? Как переписать программу на другое разрешение?
ava
baldina | 12.04.2013, 22:33 #
если при размере экрана (разрешении) w и h точка имеет координаты x,y то при другом разрешении w1,h1
x1 = x*w1/w
y1=y*h1/h
ava
volatile | 12.04.2013, 23:23 #
Цитата (CWD @  12.4.2013,  21:55 findReferencedText)
точки оказываются в других местах 

кто эти точки рисует?
ava
bsa | 13.04.2013, 07:04 #
Я фигею. До чего наше образование докатилось - человек уже не может увидеть в элементарной задаче (уровня 7-го класса) способ ее решения.
ava
Amp | 13.04.2013, 14:09 #
Цитата (volatile @  12.4.2013,  23:23 findReferencedText)
кто эти точки рисует? 

Есть подозрение, что речь идет об обоях, которые растягиваются под разрешение декстопа.
ava
volatile | 14.04.2013, 00:01 #
Цитата (Amp @  13.4.2013,  14:09 findReferencedText)
Есть подозрение, что речь идет об обоях, которые растягиваются под разрешение декстопа. 

В таком случае, не помешает привести: как эти обои поставили.
Если не ошибаюсь, обои можно поставить с растягиванием по ширине*высоте, распложить по центру, уложить плиткой, и может еще как, ...
В каждом из этих случаев алгоритм будет разный.

ava
Amp | 14.04.2013, 17:38 #
Цитата (volatile @  14.4.2013,  00:01 findReferencedText)
В таком случае, не помешает привести: как эти обои поставили.

Если не ошибаюсь, обои можно поставить с растягиванием по ширине*высоте, распложить по центру, уложить плиткой, и может еще как, ...

В каждом из этих случаев алгоритм будет разный.

Я вообще не понимаю зачем может понадобиться расчет положения пикселей на обоине при смене разрешения. Ждем дальнейших пояснений ТС.
ava
xvr | 15.04.2013, 12:33 #
Цитата (CWD @  12.4.2013,  21:55 findReferencedText)
Какова закономерность?

Закономерность может сказать только програмист фирмы Микрософт, который писал код окна Десктопа, обрабатывающий изменение его размеров  smile 

Цитата (CWD @  16.3.2013,  22:52 findReferencedText)
Подскажите есть ли какая-то зависимость между местом пикселя и разрешением экрана?

При изменении разрешения экрана десктоп полностью перерисовывается. При этом он не только растягивает обои, но и может изменить расположение иконок на себе. Так что о 'зависимости места пикселя' вообще говорить нельзя - там будут уже другие пиксели
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
ava  bsa   Dem_max   xvr   baldina   Amp   volatile   CWD
advanced
Submit