我在一些演示代码中有一个Pixbuf,我现在顺时针或逆时针旋转它取决于屏幕触摸。
我使用RotateSimple
执行此操作,但这仅限于90度的倍数。
GDK中是否有办法将Pixbuf缓冲区中的图像旋转45度(或更短)?
答案 0 :(得分:2)
我写了一个通用的pixbuf rotater函数。参数:
full_size - 此功能有两个 模式。它会产生一个新的pixbuf,它足够大 包含完全旋转的图像(加上一些额外的三角形) alpha = 0),或者它会产生一个与最大值一样大的pixbuf 在旋转的图像内刻入(水平/垂直)矩形。 如果full_size为true,那么较大的矩形带有(空白角) 生成,如果full_size为false则为较小的矩形。什么时候 旋转接近45度,小矩形的大小可能为0 并且将返回NULL pixbuf。
Width
答案 1 :(得分:1)
不,不是RotateSimple
(或底层库中的gdk_pixbuf_rotate_simple()
)。根据{{3}},仅限于旋转" 90度的倍数"。
但是,你可以做的一件事是提供多个图像以使其显示,就好像你用较小的值旋转一样。
对于45度的具体示例,只需要两个图像。第一个是"直立"您可以使用90度旋转(即使用SimpleRotate
)获得所需的八个旋转中的四个旋转的图像,0
,90
,180
和{{1} }。
要获得其他四种可能性,请将图像放入某些图像编辑软件中并使用它将其旋转45度,将其保存为"倾斜"图像。
这样,您可以通过使用两个图像的各种旋转来获得所有可能性:
270
对于更细粒度的旋转,你可以做类似的事情,如果旋转的分辨率是360度,那么尤其是。并且,由于巴比伦人的前瞻性(或苏美尔人或某人,我的历史有点生疏),360有相当多的因素。