我正在使用 python-clutter 1.0
我的问题是挑战的形式
编写代码以允许通过按键放大到 CairoTexture 演员,在步骤中,可以(通过 cairo)重新绘制每个演员,以便图像保持高分辨率但仍按预期缩放,无需重新调整演员的大小。
想想 Inkscape 之类的东西,以及如何放大矢量;矢量如何在任何放大倍率下保持干净。将一条路径(例如一组 cairoline_to
命令)放在 CairoTexture actor 上,然后让相同的技巧发生。
更多详情
我的目标是使用一组演员的小型 SVG 编辑器。每个演员都致力于一条道路。我通过使用“缩放”SomeGroup.set_depth(z)
然后使 z 更大/更小。到目前为止一切都很好。然而,演员离相机越近,纹理被拉伸得越多以适应他们新的外观尺寸。
我似乎无法找到让 Clutter 做到这两点的方法:
- 让演员的实际尺寸保持不变(即开始时的尺寸。)
- 将其底层表面换成较大的表面(放大时),然后我可以将路径重新绘制到上面(并使用 cairo 矩阵来执行上下文的缩放。)
如果我使用set_size
or set_surface_size
,演员会变大,这是不希望的。我只希望它的表面(基础数据)变得更大。
(我不确定这个术语,也许是 mipmapping?)
换句话说:多边形越来越大,增加其纹理数组的大小,以便它可以映射到更大的多边形上。
我什至尝试过通过保持第二个表面(使用 pycairo)来结束混乱,将其重新创建为演员的表观大小(get_transformed_size
),然后我使用混乱set_from_rgb_data
并将其指向我的第二个表面,强制重新表面的大小,但不是演员的尺寸。
这样做的问题是a)混乱忽略了新的尺寸,只吸收了旧的宽度/高度,b)RGBA 与 ARGB32 的东西会导致颜色崩溃。
我对任何替代想法持开放态度,我希望我站在树林里想念所有的树!
\d