微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 更改Gtk.Image的各个像素

我试图在Gtk. Image小部件上设置单个像素.文档说明Gtk.Image的ImageProp属性返回一个Gdk.Image,它似乎可以让你编辑单个像素,但每当我使用它时它只返回null.

到目前为止,我的解决方案是从磁盘加载图像作为System.Drawing.Bitmap,编辑它,将其保存到临时文件,然后将其加载回Gtk.Image,但这显然不太理想.

对于

Gtk.Image image = new Gtk.Image("images/test.png");
Gdk.Image gdkImage = image.ImageProp;

为什么gdkImage总是为空?

图像本身正确加载和显示.

解决方法

虽然我之前没有GTK#或C#的经验,但基于我对Gtk& amp;我可以在网上查看,我会尝试提供一些输入.
只有在使用提到的属性从Gdk.Image创建Gtk.Image时才能获得Gtk.Image的Gdk.Image,否则您将获得null,就像您从文件中创建它或建议的那样通过从Gdk.Pixbuf创建它.在目前的情况下,您可以尝试使用Gdk.Drawable.Getimage方法从Gdk.Drawable获取Gdk.Image或使用Gdk.Image.Get方法.在上述情况下,您可以使用与Gtk.Image关联的GdkWindow作为Gdk.Drawable.为了使Gdk.Window有效,窗口小部件应该已经显示或实现.但在这两种情况下,你很可能以null结尾.
附注: GdkImage APIs are deprecated in the newer versions of Gtk,请注意在GTK#的情况下可能不是这样.
因此,使用Gdk.Pixbuf可能是个好主意.可以获取GdkPixbuf的像素并在GTK中修改相同的像素.但遗憾的是,如果是GTK# that particular property (Pixels)的Gdk.Pixbuf是以只读方式制作的.一个选项可能是使用来自Gdk.Pixbuf的 Gdk.Pixdata,它是从图像创建的,使用Gdk.Pixdata中的方法修改像素,从中创建一个Gdk.Pixbuf&将其复制回原来的Gdk.Pixbuf.不幸的是我无法确定这一点,你可以尝试一下. 或者,您可以考虑绘制到Gdk.Drawable上.有一些例子可用,其中与Gtk.Widget相关联的Gdk.Drawable(通常是Gtk.DrawingArea)在Expose Event回调中更新. 我希望所提供的信息可以为您提供一些指导.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐