我正在将我现有的项目之一移植到 GTK3+(GTK-Sharp3 等,因为它是一个 C# 项目)。对于绝大多数情况,这是一个简单的过渡,不需要太多改变,而是我做“区域截图”类型系统的方式(其中用户确定他们希望保存为的全屏图像区域裁剪的版本)似乎已被新库弃用(或者至少我看起来不够努力)。
有问题的代码是 '[Pixmap].DrawPixBuf' 方法,其中您可以将 pixbuf 绘制到 Pixmap 中,其中包含许多参数描述要从中获取的源“矩形”和“目标”矩形以放置里面的源矩形的内容。
我最初使用的代码如下:
pmBackBuffer.DrawPixbuf(drawingAreaRegion.Style.BaseGC(StateType.Normal),
pbHazy, 0, 0, 0, 0, platformSpecific.getScreenWidth(), platformSpecific.getScreenHeight(), RgbDither.Normal, 0, 0);
它使用 pixmap 'pmBackBuffer',使用 BaseGC(现在似乎也已弃用的概念)在其上绘制,从源上的坐标 0、0 开始,并将它们放置在目标上当前屏幕的大小处。
我收集到可能 Cairo 是此类系统的替代品,并且一些在线文档建议 Pixmap 对象已被 Cairo 表面替换,但我不知道如何获得类似的行为,我可以用那些绘制 Pixbuf参数到表面。
我也找不到任何人询问如何将 Pixmap 转换为 Surface。我找到了相反的方式,但不是我想要的方式。
那么问题来了,有没有一种方法与我上面对新开罗表面的方法类似?
非常感谢任何帮助。