c#截图程序,画矩形的问题

用过截图的都知道截图的时候大背景是暗色的,而选中矩形部分是不暗的,鼠标移动事件里我用g.DrawImage(screenBmp,rect,rect,GraphicsUni... 用过截图的都知道截图的时候大背景是暗色的,而选中矩形部分是不暗的,鼠标移动事件里我用g.DrawImage(screenBmp, rect, rect, GraphicsUnit.Pixel);来不停的画矩形内的图案,会很卡,不是闪,敢问应该怎么办啊???
我说的卡的意思是矩形远远跟不上鼠标的移动速度
有耐心回答的可以看看我的代码,不多,才不到100行
展开
 我来答
上小二麻麻
2014-03-04 · 知道合伙人软件行家
上小二麻麻
知道合伙人软件行家
采纳数:3264 获赞数:11826

向TA提问 私信TA
展开全部
截屏应该用功能全面的截图工具,我用的是HyperSnap ,区域、整页、窗口、以及影视剧和游戏截图都很容易,还可设置自动保存。
阳光的雷咩咩
2014-02-28 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7723万
展开全部
我有兴趣看你的代码,请压缩发到675686066#qcom
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋月不分明6818
2014-02-28 · TA获得超过731个赞
知道小有建树答主
回答量:1608
采纳率:0%
帮助的人:629万
展开全部
使用系统;
使用System.Collections.Generic;

使用System.ComponentModel;

使用System.Data;

使用System.Drawing;

使用System.Text;

使用System.Windows.Forms的;

使用S10806Class;

使用System.IO;

命名空间的getImage

公共部分类GetScreenImgForm :表

{

/ / /公升; summarygt

/ / /图像处理类

/ / /

ImageWork imageWork =新ImageWork();

/ / /公升; summarygt

/ / /保存捕获桌面图像

/ / /

图片screenImg = NULL;

/ / /公升; summarygt

/ / /保存用户的图像区域

/ / / 矩形imgRect =新的Rectangle ();

/ / /公升; summarygt

/ / /表格的GDI

/ / /

图形克= NULL;

/ / /公升; summarygt

/ / /区域边界刷

/ / /

笔笔=新朋(Color.black的,1);

/ / /公升; summarygt

/ / /应借鉴区域

/ / /

布尔isDraw = FALSE;

/ / /公升; summarygt

/ / /是否在用户选定的区域

/ / /

布尔isOption = FALSE;

公共GetScreenImgForm()

的InitializeComponent();

/ /获取当前桌面截图

screenImg = imageWork。 GetScreenImage();

G = this.CreateGraphics();

}

私人无效GetScreenImgForm_Load(对象发件人,EventArgs的发送)

{ this.Size =新的大小(screenImg.Width,screenImg.Height);

this.BackgroundImage = screenImg;

}

私人无效GetScreenImgForm_MouseUp(对象发件人,MouseEventArgs的E)

{

/ /没有截图,然后右键单击 - !关闭视窗

如果(e.Button == MouseButtons.Right && this.isOption)

{

this.Close();

}

/ /截图和单击右 - 取消屏幕截图

否则,如果(e.Button == MouseButtons.Right && this.isOption)

{

g.DrawImage(screenImg,新点(0,0) );

this.isOption = FALSE;

回报;

} / /释放按钮,在屏幕截图的情况下,选择区域的结束,双击截取等待

否则,如果(e.Button == MouseButtons.Left && this.isOption && this.isDraw)

{

this.isDraw = FALSE;

imgRect.Width =前 - imgRect.X; / /区域长度

imgRect.Height = EY - imgRect.Y; / /区域高度

}

}
>

私人无效GetScreenImgForm_MouseDown(对象发件人,MouseEventArgs的E)

{

如果(e.Button = MouseButtons.Left!)返回;

如果(this.isOption )返回;

imgRect.X =的eX; / /开始X轴

imgRect.Y = EY; / /开始Y轴

> this.isDraw = TRUE ;/ /允许绘图

}

私人无效GetScreenImgForm_MouseMove(对象发件人,MouseEventArgs的E)

{

如果(isDraw)
> {

/ /刷新图像;

this.isOption = TRUE;

>点P1 =新的点(imgRect.X,imgRect.Y);

点P2 =新的点(EX,imgRect。 Y);

点P3 =新的点(imgRect.X,EY);

点P4 =新的点(EX,EY);

/ /画四条边框 g.DrawLine(钢笔,P1,P2);

g.DrawLine(钢笔,P2,P4);

g.DrawLine(钢笔,P4,P3);

克。的DrawLine(钢笔,P3,P1);

}

{

/ /判断用户选择的区域

诠释顶级= imgRect.Y;

整型下来= imgRect.Y + imgRect.Height;

整数左= imgRect.X;

整数右= imgRect.X + imgRect.Width;

/ /鼠标选择区域变得看看

如果(EX系列>左&&的eX 顶部&& EY <向下)

{

this.Cursor = Cursors.SizeAll; } {

this.Cursor = Cursors.Cross;

}

}

}

私人无效GetScreenImgForm_MouseDoubleClick(对象发件人, MouseEventArgs的E)

{

{

/ /用户双击所选区域尝试.....

如果(this.Cursor ==游标。 SizeAll)

{

位图B =新的位图(this.screenImg);。

位图IMG = b.Clone(this.imgRect,System.Drawing.Imaging PixelFormat.DontCare );

SaveFileDialog DLG =新SaveFileDialog();

dlg.Filter =“..(* JPG格式)| * JPG”;

如果(dlg.ShowDialog()= DialogResult.OK!)返回;

img.Save(dlg.FileName);

this.Close();

}

}

赶上(例外ERR)

{

的MessageBox.show(err.message中);

}

}

>}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式