Python 鼠标悬停时绘制图像部分
我的问题和Python GTK有关。
我有一张图片,是JPG格式的,我想把它画到一个绘图区域上。我想要在鼠标指针所在的位置显示出一部分图片,比如说一个10像素乘10像素的正方形。鼠标周围10像素乘10像素的区域以外的地方都应该隐藏,也就是显示成黑色。
我对PyGtk还很陌生,请问有人能帮我吗?
谢谢!
1 个回答
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的区域,因为你原来的区域有点小,不太容易在指针下看清楚。我也没有把这个区域隐藏起来。