Portál AbcLinuxu, 19. říjen 2017 16:56

Dotaz: Jak zabránit smazání cairo.Contextu při 'redraw' události.

25.7. 06:51 martin
Jak zabránit smazání cairo.Contextu při 'redraw' události.
Přečteno: 132×
Odpovědět | Admin
Přepisuji si starší věci z tkinteru do GObjectu a nemohu přijít na to jak zabránit smazání již vykreslených věcí do cairo.Contextu.

def on_redraw(self, widget, ctx):
    ctx.set_source_rgb(0, 0, 0)
    ctx.line_width(self.l_width)
    for x, y in self.lines:
        ctx.line_to(x, y)
    return True
Potřebuji kreslit přes předchozí vykreslení ale context se mi pořád maže.
Vyplním pole self.lines a vyvolám redraw pomocí widget.queue_draw().
Šlo by na konci uložit již vykreslené do PixBufferu a ten pak vykreslit
jako pozadí a kreslit přes něj ale nejde to nějak jednodušeji ?
Dík.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.7. 21:56
Rozbalit Rozbalit vše Re: Jak zabránit smazání cairo.Contextu při 'redraw' události.
Odpovědět | | Sbalit | Link | Blokovat | Admin
V C existuje funkcia na duplikaciu existujuce Caira. Potom pri zobrazeni das prekopirovat obsah Tebou ulozeneho Caira.

Pozri si specifikaciu kniznice.
25.7. 22:26
Rozbalit Rozbalit vše Re: Jak zabránit smazání cairo.Contextu při 'redraw' události.
Odpovědět | | Sbalit | Link | Blokovat | Admin
V tom pripade sa pouziva tak ako v C. Pri vykreslovani framu na zobrazenie Ti kniznica posle priamo Cairo, ktore rovno zobrazi a nasledne zahodi po zobrazeni. Nieco v tom duchu ako pri hrach, ked mas vykreslujes scenu,tak vzdy je ina. Nema zmysel si pamatat. Resp. signal sa posiela na vtedy na zobrazenie, ked nieco sa zmenilo. Inac pouziva poslednu screen v kniznice resp. window manager.

Tak pouzi nieco viac technicky nadradene. Nie uplne low level vrstvu v kniznice, ak Ti celkom nevyhovuje. Pouzi zrejme mozno.
26.7. 01:55 .
Rozbalit Rozbalit vše Re: Jak zabránit smazání cairo.Contextu při 'redraw' události.
Odpovědět | | Sbalit | Link | Blokovat | Admin
To jsou teda odpovědi. Kontext se neudržuje. Pokud to chceš, musíš to dělat sám. Kresli jen do pixbufu a ten vykresluj v draw (v podstatě to co píšeš, ale ne tak debilně), nevím co jednoduššího bys chtěl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.