Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пиксели на экране. 
:(
    Опции темы
CWD
Дата 16.3.2013, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



Добрый день! Подскажите есть ли какая-то зависимость между местом пикселя и разрешением экрана? Например если нужный пиксель при разрешении 1440 на 900 находится на позиции (100,150), то где этот пиксель будет находится при разрешении 1600 на 900? Спасибо.
PM MAIL   Вверх
volatile
Дата 16.3.2013, 23:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



там же и будет.

вообще вопрос не верный. если вы имеете ввиду пикселы которые рисует, например, видеоплеер, растягивающий изображение на весь экран, то пикселы будут уже не там  smile 
PM MAIL   Вверх
CWD
Дата 17.3.2013, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



volatile, Я подразумевал второй вариант. Как можно вычислить зависимость?
PM MAIL   Вверх
Dem_max
Дата 17.3.2013, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



ТС
Что у тебя не совпадает ?????
Может у тебя в настройках винды стоит увеличенный масштаб ????


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
CWD
Дата 12.4.2013, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



Попробую обьяснить проблему.

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

Код

#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. Какова закономерность? Как переписать программу на другое разрешение?

Это сообщение отредактировал(а) CWD - 12.4.2013, 21:56
PM MAIL   Вверх
baldina
Дата 12.4.2013, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



если при размере экрана (разрешении) w и h точка имеет координаты x,y то при другом разрешении w1,h1
x1 = x*w1/w
y1=y*h1/h

Добавлено через 4 минуты и 59 секунд
еще может потребоваться учет соотношения w/h до и после
PM MAIL   Вверх
volatile
Дата 12.4.2013, 23:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(CWD @  12.4.2013,  21:55 Найти цитируемый пост)
точки оказываются в других местах 

кто эти точки рисует?
PM MAIL   Вверх
bsa
Дата 13.4.2013, 07:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Я фигею. До чего наше образование докатилось - человек уже не может увидеть в элементарной задаче (уровня 7-го класса) способ ее решения.
PM   Вверх
Amp
Дата 13.4.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



Цитата(volatile @  12.4.2013,  23:23 Найти цитируемый пост)
кто эти точки рисует? 

Есть подозрение, что речь идет об обоях, которые растягиваются под разрешение декстопа.
PM MAIL   Вверх
volatile
Дата 14.4.2013, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(Amp @  13.4.2013,  14:09 Найти цитируемый пост)
Есть подозрение, что речь идет об обоях, которые растягиваются под разрешение декстопа. 

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


PM MAIL   Вверх
Amp
Дата 14.4.2013, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 3
Всего: 17



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

Я вообще не понимаю зачем может понадобиться расчет положения пикселей на обоине при смене разрешения. Ждем дальнейших пояснений ТС.
PM MAIL   Вверх
xvr
Дата 15.4.2013, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(CWD @  12.4.2013,  21:55 Найти цитируемый пост)
Какова закономерность?

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

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

При изменении разрешения экрана десктоп полностью перерисовывается. При этом он не только растягивает обои, но и может изменить расположение иконок на себе. Так что о 'зависимости места пикселя' вообще говорить нельзя - там будут уже другие пиксели

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0915 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.