Народ, я беру пиксели из картинки, загруженной в Пайнт, функцией GetPixel(), меня устраивает быстродействие, все меня устраивает (удивлены? то-то же

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

((
Наверное, я вообще неправильно подошел к решению проблемы.
Может кто-то помочь, хотя бы показать направление, куда копать? Ну а лучше кусок текста...
Заранее благодарю.
ЗЫЖ Пишу в форум по МФС потому что у меня все там делается на МФС, а то начнут щас посылать в ВинАпи.
Здравствуйте Serg32M, Вы писали:
SM>Народ, я беру пиксели из картинки, загруженной в Пайнт, функцией GetPixel(), меня устраивает быстродействие, все меня устраивает (удивлены? то-то же
. Только вот при переносе на другую машину цвета, возвращаемые этой функцией на той же самой картинке, разительно отличаются от тех, что получались на первой машине.
((
Что-то я не понял про Пайнт. А пиксели могут отличаться из-за того, что установлены разные видеорежимы, т.е разное количество цветов. Если количество цветов одинаковое, то отличаются RGB маски видеорежимов.
Р>>Здравствуйте 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, например, показывает сколько младших бит красного цвета теряется.
Попробую вообщем.