LINUX.ORG.RU

Canvas и работа с отдельными пикселями.

 , ,


1

1

Привет всем!

Я тут колупаюсь с алгоритмом путешествия по лабиринту.
Для визуализации работы и отлова багов мне понадобилось выводить это дело в некотором виде на экран.
Имея небольшой опыт работы с PyGTK, я решил попробовать PyObject+GTK3+GooCanvas.
Скудных возможностей GooCanvas-а мне достаточно, всего-то надо отобразить карту из png и поверх нее рисовать путь движения.
Возможно, потом добавится вывод информации об объекте по клику.
Карта загружается через GdkPixbuf, и тут появляется проблема с доступом к отдельным пикселям. Если раньше был метод get_pixels_array(), и с полученным массивом еще можно было более менее удобно работать, то сейчас есть только get_pixels(). Этот get_pixels() возвращает питоновский bytes, который надо самому делить на пиксели.
Я не говорю, что это невозможно. Но, может быть есть готовое решение, чтобы не велосепидировать?
В идеале, GdkPixbuf заменить бы на что-нибудь, с методом типа get_pixel_from_xy().

Что посоветуете?

★★★★

ИМХО, гораздо удобнее было бы держать «карту» лабиринта отдельно, а не выдирать её из рендера; не вариант?

И рендерить так проще:

[10111
 10001
 11101]

на 0 выводим тайл дорожки, на 1- куста :)

barti_ddu ()
Ответ на: комментарий от barti_ddu

гораздо удобнее было бы держать «карту» лабиринта отдельно

Да, можно и так. Прочитать каким-нибудь Pillow-ом. Просто я думал, что если она и так есть, то оттуда и читать, всё равно рисовать на отдельном слое.

ls-h ★★★★ ()
Ответ на: комментарий от barti_ddu

Так и рендерить картинкой; нужным тайлом.

Я просто не уточнил. Карта у меня рисуется от балды в графическом редакторе, мне ее только показать надо и считать значение цвета пикселя. Может быть это выглядит странно, но мне так быстрее, т.к. это надо только для отладки алгоритма.

ls-h ★★★★ ()
Ответ на: комментарий от ls-h

Я просто не уточнил. Карта у меня рисуется от балды в графическом редакторе

1)

$ sudo apt-get install tiled && tiled

2) Рисуешь карту

3) Экспортируешь в csv

4) Получаешь нужную тебе матрицу, например

$ cat map.csv
0,-1,-1
0,0,-1
-1,0,-1
5) profit :)

barti_ddu ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.