Я столкнулся с проблемой, которую я подозреваю, что я должен рисовать / рисовать элементы в Каире.
У меня есть окно без границ в pygtk, но я рисую два прямоугольника с черным прямоугольником cairo.a исерый прямоугольник внутри.Когда размер окна изменяется, кажется, что части внутреннего прямоугольника не рисуются / не рисуются.Я включил 3 скриншота, чтобы показать эту проблему.
Как вы можете видеть на втором и третьем рисунке, некоторые части окна не получаютокрашены в серый цветОдин из способов исправить это - вызвать метод pygtk window () (), но это делает мою программу крайне медленной, так как высота окна изменяется практически при каждом нажатии клавиши.Поэтому мне было интересно, какие альтернативы мне нужно исправить.
ниже приведен соответствующий код Каира, который я использую
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)