日期:2014-05-17  浏览次数:20716 次

求QQ截图功能的思路,具体点!清晰点!
类似QQ截图,RTX截图的功能,显示矩形大小的那个小框框暂时不要做。

用的winform.
问题焦点1:截图的时候桌面被蒙了一层暗色透明的图如何实现?
问题焦点1:怎样销毁之前在frm2上画的图。因为左键点击之后开始拉申矩形框,或者缩小矩形框。

我的想法是:1.frm_main里面截取当按截图键之后的整个screen到img:
            Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
            Graphics g = Graphics.FromImage(img);
            g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);

            Form2 frm2 = new Form2();
            frm2.Show();
然后把img传给frm2备用,这里我不知道怎么传过去给frm2.求教。。。。。frm2我把oparty属性设置成50%透明度,背景色设置个灰色就行。


2.这里就要在frm2里处理mousemove的事件。
这里我是想左键点击设置isDown = true,弹起设置false;
        private void Form2_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isDown = true;
//rect全局变量
                rect.X = e.X;
                rect.Y = e.Y;
            }
        }

        private void Form2_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                isDown = false;
        }

mousemove事件处理:
鼠标移动就销毁之前显示的那张截图(没有就不销毁)(销毁的意思是希望之前那张图完全从frm2上消失),然后根据坐标与rect,截取传过来的img的选中区的图形prtScreen,并且显示在frm2指定截图的位置。

后面的双击截图保存事件,处理比较简单,可以不告知我!

这里的代码部分,我实现老出问题,求高手解答下,或者我的思路不是很正确,求更好的方法!

------解决方案--------------------
http://www.cnblogs.com/zhouyinhui/archive/2010/08/20/1804762.html
------解决方案--------------------
QQ 截图都有现成的例子了,网上已经有人做过了,