Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557

Как в обьекте canvas определить цвет пикселя с заданными координатами

28.01.2014, 14:48. Показов 6599. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как в обьекте canvas определить цвет пикселя с заданными координатами? Или может существует обьект экран и через него можно определить цвет.

Добавлено через 1 час 30 минут
Цитата Сообщение от ASDFD12 Посмотреть сообщение
как в обьекте canvas определить цвет пикселя с заданными координатами? Или может существует обьект экран и через него можно определить цвет.
Пытался для обьекта наследующего SurfaceView вызывать this.getDrawingCache(true).getPixel(312, 300); - выкинуло ошибку - получается Cache отсутствует
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2014, 14:48
Ответы с готовыми решениями:

Как получить цвет пикселя в JavaFx Canvas
Собственно вопрос, как получить цвет одного пикселя из GraphicsContext. Такая простая вещь, а не могу нагуглить нормальное решение. Знаю...

Не получается получить цвет пикселя в canvas используя getImageData
Проблему удалось кратко описать в заголовке, тут я распишу её более подробней, есть вот такой код: var timerId = 0; var counter = 0;...

Как определить цвет пикселя?
Нужно определить цвет пикселя на рисунке . Как это сделать? В паскале была функция GetColor , а в Делфи как?

16
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
28.01.2014, 16:16
http://developer.alexanderklim... epaint.php
1
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
28.01.2014, 16:27  [ТС]
Цитата Сообщение от kirawa Посмотреть сообщение
Статейка полезная, но ответа на мой вопрос там нет. Именно через canvas я и рисую в своей игре, но как узнать цвет пикселя на экране, или с самого экрана или с canvas?
0
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
28.01.2014, 16:34
http://lmgtfy.com/?q=canvas+ge... or+android
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
28.01.2014, 16:56  [ТС]
Цитата Сообщение от kirawa Посмотреть сообщение
В классе обьявил
Java
1
Bitmap bitmap;
В конструкторе указал
Java
1
 this.setDrawingCacheEnabled(true);
В методе onDraw
Java
1
2
canvas.drawBitmap(fon, 0, 0, null);
this.bitmap=this.getDrawingCache();
В методе onTouchEvent()
Java
1
Log.d(tag,"color:"+this.bitmap.getPixel((int)e.getX(), (int)e.getY())) ;
Виводит постоянно : color:0
Что может біть не так?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
28.01.2014, 18:29
ASDFD12, Битмап объяви паблическо-статическим и this там не нужно.
Java
1
if (bmp_to_draw.getPixel(x, y) == Color.RED)...
И ты, наверное, рисуешь не там, где нужно..

Добавлено через 7 минут
Для начала, можно так:
Java
1
2
3
4
5
6
7
8
    
 v_to_draw = (ImageView)findViewById(R.id.transparent);
        v_to_draw.setImageBitmap(BitmapFactory.decodeFile(path_to_res + "/img14.png"));
        int v_to_draw_w = width;
        int v_to_draw_h = height;
        bmp_to_draw = Bitmap.createBitmap(v_to_draw_w, v_to_draw_h, Bitmap.Config.ARGB_8888);
        canvas_to_draw = new Canvas(bmp_to_draw);
        ....
Добавлено через 5 минут
И кэш тревожить там не нужно.

Добавлено через 29 минут
...
0
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
28.01.2014, 19:32
Не оно? http://stackoverflow.com/quest... in-android
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
28.01.2014, 19:42  [ТС]
мне нужно цвет пикселя получить с canvas,
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
28.01.2014, 19:59
ASDFD12, оно и получает у меня с канваса, точнее с того же битмапа, на котором рисую красные линии канвасом..
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
28.01.2014, 20:14  [ТС]
[QUOTE=MegaSinner;5706128]ASDFD12, Битмап объяви паблическо-статическим и this там не нужно.
Java
1
if (bmp_to_draw.getPixel(x, y) == Color.RED)...
И ты, наверное, рисуешь не там, где нужно..

Что ты имеешь ввиду, можешь обьяснить почему мой пример не работает?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
28.01.2014, 20:15
ASDFD12, у тебя, похоже, битмап вообще не связан с канвасом.
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
28.01.2014, 21:38  [ТС]
Цитата Сообщение от MegaSinner Посмотреть сообщение
ASDFD12, у тебя, похоже, битмап вообще не связан с канвасом.
Я понял.
Я что-то думал, что getDrawindCache() применяется для canvas.
Куда тогда записывается canvas после отображения, и есть ли слои в canvas? Тоесть когда при следующем выводе canvas его содержимое будет полупрозрачным, то будет видно как предыдущее изображение так и выводимое. Меня интересует в этот момент содержимое canvas - это предыдущее + наложенное выводимое, или предыдущее хранится уже в другом обьекте, а выводимое в canvas?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
29.01.2014, 00:17
ASDFD12, нету там никаких слоев - есть полотно(битмап) и канвас рисует на нем, по этому нужно вовремя его очищать, чтобы не было наложения нового, на уже не нужное старое - в моем случае я перерисовую тот прозрачный PNG (обновляю битмап).
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
29.01.2014, 02:35  [ТС]
Цитата Сообщение от MegaSinner Посмотреть сообщение
ASDFD12, Битмап объяви паблическо-статическим и this там не нужно.
Java
1
if (bmp_to_draw.getPixel(x, y) == Color.RED)...
И ты, наверное, рисуешь не там, где нужно..

Добавлено через 7 минут
Для начала, можно так:
Java
1
2
3
4
5
6
7
8
    
 v_to_draw = (ImageView)findViewById(R.id.transparent);
        v_to_draw.setImageBitmap(BitmapFactory.decodeFile(path_to_res + "/img14.png"));
        int v_to_draw_w = width;
        int v_to_draw_h = height;
        bmp_to_draw = Bitmap.createBitmap(v_to_draw_w, v_to_draw_h, Bitmap.Config.ARGB_8888);
        canvas_to_draw = new Canvas(bmp_to_draw);
        ....
Добавлено через 5 минут
И кэш тревожить там не нужно.

Добавлено через 29 минут
...
Здесь строчка где вы создаете Canvas
Java
1
 canvas_to_draw = new Canvas(bmp_to_draw);
bmp_to_draw - и получается тот Bitmap на который происходит рисование?

Добавлено через 2 часа 5 минут
по умолчанию canvas рисует на Surface. Как тогда из Surface получить цвет пикселя?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
29.01.2014, 10:19
Цитата Сообщение от ASDFD12 Посмотреть сообщение
bmp_to_draw - и получается тот Bitmap на который происходит рисование?
- да, он самый.
Цитата Сообщение от ASDFD12 Посмотреть сообщение
по умолчанию canvas рисует на Surface. Как тогда из Surface получить цвет пикселя?
- с сурфейса не знаю, но ничто тебе не мешает вместо него повесить тачлистенер на ImageView - результат тот же.
0
58 / 57 / 15
Регистрация: 15.09.2012
Сообщений: 557
29.01.2014, 21:28  [ТС]
Цитата Сообщение от MegaSinner Посмотреть сообщение
ASDFD12, нету там никаких слоев - есть полотно(битмап) и канвас рисует на нем, по этому нужно вовремя его очищать, чтобы не было наложения нового, на уже не нужное старое - в моем случае я перерисовую тот прозрачный PNG (обновляю битмап).
Если так, то как тогда работают графические фильтры, о которых вы говорили в моей теме "Ограничение движения персонажа". Я так понял, на нужный обьект накладывается фон, с заданым цветом и прозрачночстью 100%, мы видим обьект таким как нужно, а цвет там красный, как такое возможно без использование слоев (при рисовании на единственный Bitmap)?

Добавлено через 9 часов 36 минут
(_!_)
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
30.01.2014, 00:07
ASDFD12, а я и не говорил, что без слоев или ты не так понял:
- нижние слои - графика игры (фон/персонажи).
- средний слой (невидимый) - маска.
- верхний слой (полностью прозрачный(ImageView)) - поверхность для касаний..
Еще вопросы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2014, 00:07
Помогаю со студенческими работами здесь

Функция, которая возвращает цвет пикселя в точке с координатами х, у
Доброго времени суток. Уважаемые программисты, подскажите пожалуйста, есть ли в Visual Studio С++ 10 функция, которая бы возвращала цвет...

Как определить цвет пикселя в координате?
Как определить цвет пикселя в координате на рабочем столе?

Как определить цвет пикселя по курсором?
Подскажите, задача такая: Я перемещаю курсор в определенные координаты, мне нужно определить цвет пикселя под курсором и записать этот...

Как определить цвет пикселя на jpg картинке?
может кто знает как определить цвет пикселя form2.image1.picture.loadfromfile('c:\WebBrowserImage.jpg'); собственно уже неделю рыскаю...

Определить цвет пикселя
Привет всем! Есть такой вопрос: есть переменная char wr; так вот есть ли такая функция в языке С, которая бы определяла цвет пикселя с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru