Я использую python-clutter 1.0
Мой вопрос в форме вызова
Напишите код, чтобы разрешить увеличение до актера CairoTexture, нажавключ, в таких шагах, что на каждом актере можно перерисовать актера (cairo), чтобы изображение оставалось в высоком разрешении, но все равно масштабировалось, как и ожидалось, без изменения размера актера.
Подумайте о чем-то вроде Inkscape и о том, как вы можете увеличивать векторы;как векторы остаются чистыми при любом увеличении.Положите путь (скажем, кучу команд cairo line_to
) на актера CairoTexture, а затем позвольте этому же трюку произойти.
Подробнее
Я стремлюсьв небольшом редакторе SVG, который использует группы актеров.Каждый актер посвящен одному пути.Я «масштабирую» с помощью SomeGroup.set_depth(z)
, а затем делаю z больше / меньше.Пока все хорошо.Однако чем ближе актер (ы) к камере, тем больше растягивается текстура, чтобы соответствовать их новому кажущемуся размеру.
Кажется, я не могу найти способ заставить Клаттера сделать оба:
- Оставьте действительный размер актера неизменным (т. Е. С чего он начинался).
- Поменяйте его нижнюю поверхность на более крупные (при увеличении), чтобы затем я мог заново нарисоватьпуть на (и использование матрицы Каира для масштабирования контекста.)
Если я использую set_size
или set_surface_size
, актер получает больше , что непредназначена.Я только хочу, чтобы это поверхность (лежащие в основе данные) становилось больше.
(я не уверен в терминологии для этого, возможно, mipmapping?)
Другими словами: многоугольник становится больше, увеличьте размер его массива текстур, чтобы он мог отображаться на больший многоугольник.
Я даже пробовал обходить беспорядок в конце, сохраняя вторую поверхность (используя pycairo), котораяЯ воссоздаю до видимого размера актера (get_transformed_size
) и затем использую беспорядок set_from_rgb_data
и указываю его на мою вторую поверхность, заставляя изменить размер поверхности, но не размеров актера.
Проблема в том, что а) беспорядок игнорирует новый размер и рисует только старую ширину / высоту, и б) вещь типа RGBA против ARGB32 вызывает цветовой распад.
Я открытна любые альтернативные идеи, я надеюсь, что я стою в лесу, скучая по всем деревьям!
\ d