Re[3]: GetPixel()
От: Рома Россия  
Дата: 03.07.02 06:58
Оценка:
Р>>Здравствуйте Serg32M, Вы писали:

А>Так вот от видеорежима(кол-ва цветов, разрешения) ничего не зависит(проверено), цвет, взятый сабжем, неизменен при запусках проги на какой-то одной машине. Но как только я запущаю ее на другой — для тех же контрольных точек картинки возвращаются другие значения цветов.


Ну видимо может быть две проблемы.
1) неправильно берутся координаты точки
2) всё-таки маски для RGB состовляющих отличаются на этих машинах.
Цветовые компоненты можно получить.

 
GetBValue(
  WORD rgb     // 32-bit RGB value
);  
GetGValue(
  WORD rgb     // 32-bit RGB value
);  
GetRValue(
  WORD rgb     // 32-bit RGB value
);


Попробуй может действитнельно маски отличаются.
Вот код для их определения (ф-ии в API я не нашёл)

   //вход: x,y - координаты
   DWORD r,g,b;
   int rshift,bshift,gshift;
   DWORD pixel;
   r=g=b=1;
   rshift=gshift=bshift=-1;
   HDC hdc=GetDC(hwnd);
   do
   {
        pixel=RGB(r,0,0);
        pixel=SetPixel(hdc,x,y,pixel);
        pixel=GetPixel(hdc,x,y);
        r<<=1;
        rshift++;
   }
   while(!pixel);
   //для остальных цветовых соствавляющих тоже самое.
   //.... 
   ReleaseDC(hwnd,hdc);

rshift, например, показывает сколько младших бит красного цвета теряется.
Попробую вообщем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.