如何转置 cairo 上下文或更改轴的方向?

Posted

技术标签:

【中文标题】如何转置 cairo 上下文或更改轴的方向?【英文标题】:How to transpose cairo context or change the orientation of an axis? 【发布时间】:2013-02-16 22:34:04 【问题描述】:

我需要想象一个机器人游戏的比赛场地。不幸的是,游戏使用右手坐标系,y 轴指向上方。

有没有办法调整绘图区域的 cairo 上下文,使其匹配这个坐标系?

我可以缩放,平移和旋转,但是我找不到切换y轴方向的方法,这比单独转换所有坐标更方便。

感谢您的任何意见!

【问题讨论】:

【参考方案1】:

您可以在cairo_matrix_t 中定义每个字段:

cairo_matrix_t flip_y;
cairo_matrix_init(&flip_y, 1, 0, 0, -1, 0, 0);
cairo_set_matrix(cr, &flip_y);

只要记住转换是如何应用的:

x_new = xx * x + xy * y + x0;
y_new = yx * x + yy * y + y0;

【讨论】:

具有相同效果的更简单的东西:cairo_scale(cr, 1, -1);

以上是关于如何转置 cairo 上下文或更改轴的方向?的主要内容,如果未能解决你的问题,请参考以下文章

Gtk+:如何从 Cairo 上下文中设置窗口的光标?

gjs cairo 上下文绘图未显示在杂乱的窗口中

使用 Gdk Cairo 上下文绘制椭圆

Android:如何旋转或更改使用库录制的视频的方向?

Android:为啥 DialogFragment 在方向更改时返回空指针

css属性z-index解析