gpt4 book ai didi

python - 如何从 cairo.ImageSurface 获取像素?

转载 作者:行者123 更新时间:2023-12-05 07:54:58 27 4
gpt4 key购买 nike

我制作了一个 Python 程序,当我点击一个按钮时,它会绘制一个内部有一个白色圆圈的黑色矩形。我使用 Gtk.DrawingAreacairo.ImageSurface。代码如下。

class App:

def __init__(self, width, height):

self.surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)

# Builder
self.builder = Gtk.Builder()
self.builder.add_from_file('ventana.glade')
go = self.builder.get_object

# Widgets
self.window = go('window')
self.drawingarea = go('drawingarea')
self.button = go('button')

signals = {
'gtk_main_quit' : Gtk.main_quit,
'draw' : self.draw
}

self.builder.connect_signals(signals)
self.window.show_all()


def draw(self, widget):
context = self.drawingarea.get_window().cairo_create()
context.set_source_surface(self.surface)

context.set_source_rgba(0.0, 0.0, 0.0, 1.0)
context.rectangle(0, 0, self.surface.get_width(), self.surface.get_height())
context.fill()

context.translate(10, 10)
context.arc(0, 0, 10, 0, 2 * pi)
context.set_source_rgba(1.0, 1.0, 1.0, 1.0)
context.fill()

我得到以下窗口。

enter image description here

它工作正常,但我需要获取该图片像素的 RGB 值,所以我尝试执行 map(ord, self.surface.get_data()),但我得到了零列表。

如何获得包含像素 RGB 的列表?

我还有另一个问题:当我最小化窗口或切换到另一个窗口时,绘图会消失。有没有可能避免这种情况?

最佳答案

我不知道如何获得你的颜色但关于绘图,将你的窗口与'configure-event'连接(事件是窗口状态改变)然后调用drawingarea.queue_draw()

关于python - 如何从 cairo.ImageSurface 获取像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30634065/

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