2010-02-25 92 views
2

我的問題涉及到Python GTKPython繪圖鼠標懸停時的圖像部分

我有一個圖像-a JPG--我將其繪製到繪圖區域。我想揭示圖像的一部分 - 可以是10像素×10像素的方塊 - 只有鼠標指針所在的位置。所有距離鼠標10 x 10像素的地方都應隱藏,即黑色。

我是新來的PyGtk請任何人都可以幫忙嗎?

感謝

回答

2
#!/usr/bin/python          

import os 
import sys 
import gtk 

MASK_COLOR = 0x000000 

def composite(source, start_x=345, start_y=345): 
    width = 50          
    height = 50         
    alpha = 255         
    dest = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8 ,800,800) 
    dest.fill(MASK_COLOR)           
    source.composite(dest,           
        start_x,          
        start_y, 
        width, 
        height, 
        0, 
        0, 
        1, 
        1, 
        gtk.gdk.INTERP_NEAREST, 
        alpha) 

    return dest 


def it_moved(widget, event, window, masked, original): 
    r = window.get_display().get_window_at_pointer() 
    masked.set_from_pixbuf(composite(original.get_pixbuf(), r[1], r[2])) 
    return True 


if __name__ == '__main__': 
    window = gtk.Window() 
    eb = gtk.EventBox() 
    original = gtk.Image() 
    original.set_from_file(sys.argv[1]) 

    masked = gtk.Image() 
    masked.set_from_pixbuf(composite(original.get_pixbuf())) 

    eb.add(masked) 
    eb.set_property('events', gtk.gdk.POINTER_MOTION_MASK) 
    eb.connect('motion_notify_event', it_moved, window, masked, original) 
    window.add(eb) 
    window.set_size_request(800,800) 
    window.show_all() 
    gtk.main() 

像你描述這應該做的事情。我選擇展示一個50x50的區域,因爲你的指針下看起來有點小。我也沒有隱瞞。

+0

感謝您的代碼 - 很好的例子! – sdaau