Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

GetPixel не берет пиксель (Builder 6)

13K
07 сентября 2005 года
mamav
3 / / 06.09.2005
Всем привет. Возникла следующая проблемма:
Необходимо узнать цвет пикселов в 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++, но мне это не помогло. Прошу помочь, в чем я ошибиться мог?
310
07 сентября 2005 года
fellow
853 / / 17.03.2003
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);

4. Взятие пиксела - медленная операция. Рассмотри возможность обработки сразу всей Image1->Picture->Bitmap->ScanLine.

13K
07 сентября 2005 года
mamav
3 / / 06.09.2005
Цитата:
Originally posted by fellow
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 я не выяснил.
Спасибо за помощь, буду долбить дальше.:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог