2011-01-14 2 views
0

ich verwende pygtk und kairoZeichnung Teil (sage ich ... wunderbare Sachen muss. Vielen Dank an alle) eines Bildes auf eine Oberfläche kairo

Ich frage mich, wie Teile der Bilder auf meiner meiner kairo Oberfläche präsentieren auf einem großen Zeichenbereich.

Ich möchte Bereiche innerhalb der angezeigten Oberfläche haben, die scheinbar abgeschnitten wirken, damit ich Bilder durch diese Bereiche scrollen kann, ohne die umgebenden gezeichneten Elemente zu stören.

Kann ich Bilder für die Teilezeichnung auf eine Oberfläche schneiden oder muss ich die Zeichnungsfolge in der richtigen Reihenfolge erhalten, so dass die zu überschneidenden Bilder überlagert und so wie gewünscht ausgeblendet werden und abgeschnitten erscheinen?

Dank für alle Hinweise

nick

+0

versuchen, weitere Informationen zu erhalten, während für einige Hinweise warten/hoffen, ... bin ich nach etwas entlang der Linien eines Betreibers wie OPERATOR_IN? Ich kann keine Details finden, um mich dorthin zu bringen, wo ich will ... – nick

Antwort

1

Kairo ist in der Tat wunderbar! ctx.clip() ist eine Möglichkeit, dies zu tun, indem ein Beschneidungspfad verwendet wird (unten in nur pycairo gezeigt, wo das letzte Zeichenrechteck nur auf den dreieckigen ausgeschnittenen Bereich trifft).

Sie könnten auch einen Übertragungsmodus von CAIRO_OPERATOR_OUT verwenden (denke ich), aber ich bin weniger vertraut mit den Übertragungsmodi. Und das würde nur bei der ersten Ziehung funktionieren, da dein Inhalt das Alpha ein bisschen füllen würde.

(Ihr Vorschlag von „Painting Order“ wird gut funktionieren, natürlich auch!)

import cairo 

WIDTH, HEIGHT = 256, 256 

surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT) 
ctx = cairo.Context (surface) 

ctx.rectangle(0,0,300,300) 
ctx.set_source_rgb(0,0,0) 
ctx.fill() 

ctx.move_to(0,0) 
ctx.line_to(200,90) 
ctx.line_to(90,200) 
ctx.line_to(0,0) 
ctx.close_path() 
ctx.clip() 

ctx.rectangle(0,0,300,300) 
ctx.set_source_rgb(1,1,0) 
ctx.fill() 

surface.write_to_png("clipped.png") 
Verwandte Themen