0

私はpygtkとcairoを使用しています(...私が言わなければならない素晴らしいことです。すべてに感謝します)

大きな描画領域の私のカイロ表面に画像の一部を表示する方法を考えています。

表示されたサーフェス内にクリッピングされたように見える領域があり、周囲の描画アイテムを乱すことなくこれらの領域を画像をスクロールできるようにしたいと考えています。

部分描画用の画像を表面に切り取ることはできますか、それとも適切な順序で描画シーケンスを取得する必要がありますか?

ポインタをありがとう

ニック

4

1 に答える 1

1

カイロは本当に素晴らしいです!ctx.clip() は、クリッピング パスを使用してそれを行う 1 つの方法です (以下に pycairo のみを示します。最終的な描画四角形は、三角形のクリップされた領域にのみヒットします)。

CAIRO_OPERATOR_OUT の転送モードを使用することもできますが (私はそう思います)、私は転送モードにあまり詳しくありません。そして、コンテンツがアルファを少し埋めるため、それは最初の描画でのみ機能します.

(もちろん、あなたの提案する「塗装順序」も問題ありません!)

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")
于 2011-01-15T05:05:43.823 に答える