gpt4 book ai didi

python - 有没有办法在 Python 中附加到现有的 gnome canvas bpath?

转载 作者:太空狗 更新时间:2023-10-29 17:51:32 24 4
gpt4 key购买 nike

我正在尝试使用 Python 和 gnomecanvas 制作一个简单的绘图应用程序。可悲的是,似乎没有关于 gnomecanvas 的 Python 绑定(bind)的任何文档。因此,我笨手笨脚地使用代码示例并尝试从 C 绑定(bind)中进行猜测。

事实上,我通过在笔画中保留当前点列表并在每个新项目处从该列表生成一个新路径对象来使代码工作:

def get_pointer_coords(self, event):
return self.window_to_world(event.x, event.y)

def render_path(self):
path_def = gnomecanvas.path_def_new(self.cur_path)
self.current_item.set_bpath(path_def)

def button_press(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if is_core:
return
self.drawing = True
(x, y) = self.get_pointer_coords(event)
self.cur_path = [(gnomecanvas.MOVETO_OPEN, x, y)]
self.current_item = self.root().add( gnomecanvas.CanvasBpath
, outline_color="#A6E22E"
, width_pixels=1
, cap_style=gdk.CAP_ROUND
)

def button_release(self, event):
self.drawing = False

def motion_notify(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if not is_core and self.drawing:
(x, y) = self.get_pointer_coords(event)
self.cur_path.append((gnomecanvas.LINETO, x, y))
self.render_path()

在我看来,这是一种相当低效的方法:每次指针移动时都生成一个新对象;并且考虑到我从我的平板电脑获得亚像素精度,这是相当频繁

我的问题是:有没有一种方法可以让我像在这个库的 C 版本中那样简单地附加到每个指针运动的现有 bpath 上?

在相关说明中,是否有此 API 的任何文档,因为我已经进行了数小时的谷歌搜索,但没有给我任何返回。

最佳答案

原生 C API 上有很好的 libgnomecavas 2.3 文档,其中包含与 gnomecanvas 一起使用的所有 C 函数的描述。

Python 绑定(bind)通常不会公开所有描述的 API,特别是您想要的功能,并且没有关于 gnome Canvas 的 Python 绑定(bind)的文档,所有力量都被派去开发与 Gnome3 相关的东西(您可以在 live.gnome.org 探索它).

另一件事是 gnomecavas 和 Python 绑定(bind)已经过时了;并且没有计划在未来支持它们(例如,最近几个版本的 Ubuntu 只是将这个包从一个版本复制到另一个版本而没有任何更改)。

但是还有另一个名为 GooCanvas 的 Canvas 库,它使用 Cairo 在屏幕上绘图并且似乎是最新的,具有 PyGooCanvas Python 绑定(bind)并被一些广泛的项目使用,例如 Pitivi。


关于python - 有没有办法在 Python 中附加到现有的 gnome canvas bpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397572/

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