ich lerne gerade Python. Nachdem ich mir PyGTK angesehen habe bin ich nun bei PyCairo angelangt.
Seit vielen Stunden versuche ich nun auf einer Zeichenfläche in einem Fenster zwei beschnittene Bilder zu zeichnen.
Meinen Recherchen zu folge sollte ich dazu die mask_surface Methode nutzen.
Mein Ziel is es am Ende eine Funktion zu haben die in etwa so aussehen könnte.
Code: Alles auswählen
def drawImage(ctx, x, y, width, height, dx, dy, dwidth, dheight)
Der Rote Bildausschnitt soll also frei platziert werden können.
Ich bin nun an einem Punkt angekommen an dem ich alleine nicht mehr weiter komme.
Über die bekannten Suchmaschinen konnte leider auch keinen hilfreichen Beitrag finden.
Ich kann zwar die Bilder maskieren, das maskierte Bild lässt sich jedoch nicht frei platzieren.
Wenn ich versuche das maskierten Bildausschnitt zu verschieben verschiebe ich auch die Maskierung.
Hier ist noch der Code:
Code: Alles auswählen
from gi.repository import Gtk, GLib
import cairo
class Example(Gtk.Window):
def __init__(self):
super(Example, self).__init__()
self.darea = Gtk.DrawingArea()
self.darea.connect("draw", self.on_draw)
self.add(self.darea)
self.set_title("Mask")
self.resize(800, 400)
self.set_position(Gtk.WindowPosition.CENTER)
self.connect("delete-event", Gtk.main_quit)
self.show_all()
self.image = cairo.ImageSurface.create_from_png("demo.png")
self.ims = cairo.ImageSurface(cairo.FORMAT_ARGB32, 40, 40)
def on_draw(self, wid, cr):
ic = cairo.Context(self.ims)
ic.rectangle(0, 0, 40, 40)
ic.fill()
cr.set_source_surface(self.image, 0, 0)
cr.mask_surface(self.ims, 0, 0)
def main():
app = Example()
Gtk.main()
if __name__ == "__main__":
main()
Gruß Squee