鼠标悬停时Python绘图部分的图像

时间:2010-02-25 19:24:17

标签: python image-processing pygtk

我的问题与Python GTK有关

我有一个图像-a JPG - 我将它绘制到绘图区域。我想揭示图像的一部分 - 分为10像素×10像素 - 只是鼠标指针当前所在的位置。距离鼠标10 x 10 px平方的所有东西都应隐藏,即黑色。

我是PyGtk的新手,请有人帮忙吗?

谢谢

1 个答案:

答案 0 :(得分: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的区域,因为你的指针下看起来有点小。我也没有隐瞒这一点。