반투명 primitives such as filled polygons을 어떻게 GTK의 드로어 블에 그릴 수 있습니까?알파 블렌딩 (gtk)
2010 년, 그리고 Google은 나를 위해 색상에 알파 값을 넣는 방법을 찾지 못했습니다. 내가 뭘 놓치고 있니?
반투명 primitives such as filled polygons을 어떻게 GTK의 드로어 블에 그릴 수 있습니까?알파 블렌딩 (gtk)
2010 년, 그리고 Google은 나를 위해 색상에 알파 값을 넣는 방법을 찾지 못했습니다. 내가 뭘 놓치고 있니?
gtk.gdk.Drawable.cairo_create()
을 사용하고 반품 된 gtk.gdk.CairoContext
을 사용하십시오. documentation을 참조하십시오. Cairo는 GTK +에서 여러 버전 이전부터 사용 된 일반적인 벡터 2D 라이브러리입니다. GDK 그리기 프리미티브는 더 이상 사용되지 않습니다 (GDK 전체가 아님).
실제 소스 코드는 다음과 같습니다. Pixbuf 전체를 회색으로 처리하고 싶었지만 모양을 사용하려면 적절한 경로 방법을 사용해야합니다.
def getBlendedPixbuf(pixbuf, (r,g,b,a)):
"""Turn a pixbuf into a blended version of the pixbuf by drawing a
transparent alpha blend on it."""
pixbuf = pixbuf.copy()
#convert pixbuf to Drawable:
visual = gtk.gdk.visual_get_best()
screen = visual.get_screen()
cmap = screen.get_default_colormap()
w,h = pixbuf.get_width(), pixbuf.get_height()
drawable = gtk.gdk.Pixmap(
None, w, h, visual.depth)
gc = drawable.new_gc()
drawable.draw_pixbuf(
gc, pixbuf, 0,0,0,0,-1,-1)
#do all the drawing on it
cc = drawable.cairo_create()
cc.set_source_rgba(r,g,b,a)
cc.paint()
#put it back into a pixbhf
pixbuf.get_from_drawable(
drawable,cmap,0,0,0,0,w,h)
return pixbuf