GetPixel не берет пиксель (Builder 6)
Необходимо узнать цвет пикселов в Image1, туда загружается bmp изображение, которое и обрабатывается. Но GetPixel хватает значение пикселов под рисунком, на канве формы, как сделать чтоб хватал значения загруженного битмапа.
Longint cvet;
...
...
for (i=0; i<120;i++)
{ for (j=0;j<120;j++)
cvet==GetPixel(Image1->Picture->Bitmap->Canvas,40+i,40+j);
if (cvet>=00000000)
mass[j]==1;
else
mass[j]==0;
}
В Help'е к Билдеру примера для getpixel нет, поиск по форуму нашел такую же ситуацию но в VC++, но мне это не помогло. Прошу помочь, в чем я ошибиться мог?
2. Типичная ошибка. Первый параметр GetPixel - HDC, поэтому делать надо так:
cvet=GetPixel(Image1->Picture->Bitmap->Canvas->Handle,40+i,40+j);
3. И вообще, не проще ли было обойтись свойством Pixels? Например, так:
cvet=Image1->Picture->Bitmap->Canvas->Pixels(40+i,40+j);
4. Взятие пиксела - медленная операция. Рассмотри возможность обработки сразу всей Image1->Picture->Bitmap->ScanLine.
Цитата:
Originally posted by fellow
1. Почему у тебя повсеместно операторы сравнения на равенство (==) вместо операторов присваивания(=)?
1. Почему у тебя повсеместно операторы сравнения на равенство (==) вместо операторов присваивания(=)?
Спасибо, это заклинило, в плане не клавиатуру а меня.
Цитата:
2. Типичная ошибка. Первый параметр GetPixel - HDC, поэтому делать надо так:
cvet=GetPixel(Image1->Picture->Bitmap->Canvas->Handle,40+i,40+j);
Вот это меня очень и волновало, я чувствую делаю не правильно, но как правильно не знаю...
Цитата:
3. И вообще, не проще ли было обойтись свойством Pixels? Например, так:
cvet=Image1->Picture->Bitmap->Canvas->Pixels(40+i,40+j);
Эту программу для систем технического зрения писал в досе(а он как-то устарел), и теперь приходиться переписывать для Windows, а в досе я использовал getpixel, вот и перешло. Привычка наверно.
Цитата:
4. Взятие пиксела - медленная операция. Рассмотри возможность обработки сразу всей Image1->Picture->Bitmap->ScanLine.
Я думал об этом, но толкового примера использования не нашел, в книжеце В. Шамиса написано мол GetPixel - плохо, ScanLine[Y] лучше. На этом абзац завершаеться и чем лучше ScanLine я не выяснил.
Спасибо за помощь, буду долбить дальше.:)