我遇到了一個問題,我懷疑必須在開羅繪畫/繪畫元素。重新粉刷開羅窗戶?
我在pygtk中有一個無邊界的窗口,但是我畫了兩個帶cairo.a黑色矩形的矩形,裏面有一個灰色的矩形。調整窗口大小時,似乎內部矩形的某些部分不會被繪製/繪製。我已經包含3個截圖來展示這個問題。
正如你在第二和第三圖片中看到,窗口的一些作品沒有得到漆成灰色。解決這個問題的一種方法是調用pygtk的窗口的present()方法..但是這會讓我的程序非常慢,因爲窗口的高度隨着每個按鍵的變化而變化。所以我想知道我有什麼替代方案來解決這個問題。下面
是相關開羅代碼我使用
def expose(self, widget, e):
cr = widget.window.cairo_create()
# Draw the background
cr.set_operator(cairo.OPERATOR_SOURCE)
# Create black rectangle with 60% opacity (serves as border)
(width, height) = widget.get_size()
cr.set_source_rgba(0, 0, 0, 0.6)
cr.rectangle(0, 0, width, height)
cr.fill()
# Inside the black rectangle, put a lighter one (will hold widgets)
(width, height) = widget.get_size()
cr.set_source_rgb(205/255, 205/255, 193/255)
cr.rectangle(10, 10, width-20, height-20)
cr.fill()
return False
def screen_changed(self, widget, old_screen = None):
screen = widget.get_screen()
colormap = screen.get_rgba_colormap()
widget.set_colormap(colormap)
這是做到了。謝謝。 – sqram 2012-03-17 02:53:07