gpt4 book ai didi

c# - Cairo 可以直接绘制到 Gtk.Pixbuf 上吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:05 25 4
gpt4 key购买 nike

我在 C# 中有一个很好的工作系统,它在渲染方法中使用 Cairo 命令进行绘制。然而,有时我想绘制成一个像素图,而不是在需要更新屏幕时动态绘制。例如,目前我有:

public override void render(Cairo.Context g) {
g.Save();
g.Translate(x, y);
g.Rotate(_rotation);
g.Scale(_scaleFactor, _scaleFactor);
g.Scale(1.0, ((double)_yRadius)/((double)_xRadius));
g.LineWidth = border;
g.Arc(x1, y2, _xRadius, 0.0, 2.0 * Math.PI);
g.ClosePath();
}

但是,如果我愿意的话,我想将 Cairo 命令呈现给 Gtk.Pixbuf。像这样的东西:

 g = GetContextFromPixbuf(pixbuf);
render(g);

这可能吗?如果我不必将上下文转回 pixbuf,但 cairo 绘图将直接进入 pixbuf,那就太好了。对此有任何提示,我们将不胜感激!

最佳答案

答案实际上很简单:渲染对象时,将它们渲染到从保存的表面创建的上下文中。然后,当您渲染窗口时,插入一个基于相同保存表面的上下文。

创建表面:

  surface = new Cairo.ImageSurface(Cairo.Format.Argb32, width, height);

渲染一个形状到表面:

using (Cairo.Context g = new Cairo.Context(surface)) {
shape.render(g); // Cairo drawing commands
}

渲染窗口:

  g.Save();
g.SetSourceSurface(surface, 0, 0);
g.Paint();
g.Restore();
... // other Cairo drawing commands

就是这样!

关于c# - Cairo 可以直接绘制到 Gtk.Pixbuf 上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7523521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com