2009-08-20 61 views
0

我正在寻找一个工具/控件/组件,我可以用它来定位我的胜利表单的图像控件,并且它会从特定区域中选择一个屏幕截图选择。Winforms(.NET)的屏幕截图选择器组件

用户将无法将此“相机”移出窗体,并且在从图像控件中选取部分图像后,我需要相机将标记复制区域的颜色与特殊图层或切割它出来了,不管怎么样。

不胜感激任何想法,并得到您对建议组件的意见。

我们与.NET fx 3.5一起使用Winforms应用程序。

感谢名单!

回答

1

在窗体构造函数(在InitializeComponent()之后,调用),添加:

monitor.MouseMove += new MouseEventHandler(monitor_MouseMove); 
monitor.MouseLeave += new EventHandler(monitor_MouseLeave); 
monitor.MouseClick += new MouseEventHandler(monitor_MouseClick); 

现在,添加以下到您的Form类:

const int adjustX = -50; 
const int adjustY = -50; 

public Size boxSize = new Size(100, 100); 
public int lastX = 2 * adjustX; 
public int lastY = 2 * adjustY; 

private void monitor_MouseMove(object sender, MouseEventArgs e) { 
    if (e.X != lastX || e.Y != lastY) { 
    Graphics g = monitor.CreateGraphics(); 

    g.CopyFromScreen(monitor.PointToScreen(new Point(lastX + adjustX, lastY + adjustY)), new Point(lastX + adjustX, lastY + adjustY), boxSize, CopyPixelOperation.DestinationInvert); 

    lastX = e.X; 
    lastY = e.Y; 

    g.CopyFromScreen(monitor.PointToScreen(new Point(e.X + adjustX, e.Y + adjustY)), new Point(e.X + adjustX, e.Y + adjustY), boxSize, CopyPixelOperation.DestinationInvert); 
    } 
} 

void monitor_MouseLeave(object sender, EventArgs e) { 
    Graphics g = monitor.CreateGraphics(); 

    g.CopyFromScreen(monitor.PointToScreen(new Point(lastX + adjustX, lastY + adjustY)), new Point(lastX + adjustX, lastY + adjustY), boxSize, CopyPixelOperation.DestinationInvert); 

    lastX = 2 * adjustX; 
    lastY = 2 * adjustY; 
} 

最后,在你的鼠标点击处理程序:

void monitor_MouseClick(object sender, MouseEventArgs e) { 

} 

你将不得不添加任何你想做的选择区域。您可以将它复制到另一个图片框,将其保存为位图,无论如何。