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