我想使用Python和gnomecanvas做一個簡單的繪圖應用程序。令人遺憾的是,似乎沒有任何關於gnomecanvas的Python綁定的文檔。因此,我無意中使用代碼示例並嘗試從C綁定中猜測。有沒有辦法在Python中追加到現有的gnome canvas bpath?
正因爲如此,我的代碼將在每一個新項目從該列表保持當前點列表中中風,生成新的路徑對象的工作:
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()
在我看來這是一種相當低效的方法:每次指針移動時生成一個新對象;並考慮到我從我的平板電腦獲得亞像素精度,這往往是。
我的問題是:有沒有一種方法可以簡單地追加到每個指針運動上的現有bpath上,就像我在C庫的這個庫中一樣?
在一個相關的說明,有沒有這個API的任何文檔,因爲我已經做了幾個小時的谷歌搜索沒有給我任何回報。