私はカイロで絵画/絵画要素をしなければならないと思われる問題に遭遇しました。窓を再塗装しますか?
私はpygtkにフチ無しのウィンドウを持っていますが、私はcairo.aの黒い四角形と内側に灰色の四角形で2つの長方形を描いています。ウィンドウのサイズを変更すると、内側の四角形の一部が描画/塗りつぶされないように見えます。私はこの問題を示すために3つのスクリーンショットを含めました。
2番目と3枚目の画像で見ることができるように、ウィンドウのいくつかの作品は、灰色の塗装されません。これを修正する1つの方法は、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