Graphics类和GraphicsPath类的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Graphics类和GraphicsPath类的使用
做课件做到无聊,弄了一个仿QQ截图
利用SendKeys.SendWait("+{PRSTC}")截取当前屏幕
利用Clipboard.GetImage()从剪切板中得到截取到的图片
利用Graphics添加一个全屏的矩形框,颜色为半透明灰色。
Graphics g = Graphics.FromImage(bit);
Pen p = new Pen(Color.FromArgb(128,128,128,128));
g.DrawRectangle(p,0,0,bit.size);
接着在窗体的Mouse _Down事件下记录下坐标
startpoint=e.point;
在Mouse_move和Mouse _Up事件下做同样的操作
endpoint=e.point;
Rectangle=(Math.Min(endpoint.X, startpoint.X), Math.Min(endpoint.Y, startpoint.Y), Math.Abs(startpoint.X - endpoint.X), Math.Abs(startpoin.Y - endpoint.Y))
具体代码如下:
private void saveTU()
{
Bitmap newb = new Bitmap(rec.Width, rec.Height);
Graphics gl = Graphics.FromImage(newb as Image);
gl.DrawImage(bit,new Rectangle(0,0,rec.Width,rec.Height), rec, GraphicsUnit.Pixel);
newb.Save("E://1.bmp");
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (gp.PointCount > 0)
{
SolidBrush sb = new SolidBrush(Color.FromArgb(128, 128, 128, 128));
e.Graphics.FillPath(sb, gp);
}
}
private void Form2_MouseDown(object sender, MouseEventArgs e)
{
qd = new Point(e.X, e.Y);
d = true;
}
private void Form2_MouseUp(object sender, MouseEventArgs e)
{
if (d)
{
zd = new Point(e.X, e.Y);
rec = new Rectangle(Math.Min(e.X, qd.X), Math.Min(e.Y, qd.Y), Math.Abs(e.X - qd.X), Math.Abs(e.Y - qd.Y));
gp.Reset();
gp.AddRectangle(this.Bounds);
gp.AddRectangle(rec);
this.Invalidate();
d = false;
}
saveTU();
}
GraphicsPath gp = new GraphicsPath();
private void Form2_Load(object sender, EventArgs e)
{
gp.Reset();
gp.AddRectangle(this.Bounds);
//gp.AddRectangle(new Rectangle(10, 10, 150, 150));
//gp.AddPie(new Rectangle(50, 50, 255, 255), 115f, 115f);
this.Invalidate();
}
private void Form2_MouseMove(object sender, MouseEventArgs e)
{
if (d)
{
zd = new Point(e.X, e.Y);
rec = new Rectangle(Math.Min(e.X, qd.X), Math.Min(e.Y, qd.Y), Math.Abs(e.X - qd.X), Math.Abs(e.Y - qd.Y));
gp.Reset();
gp.AddRectangle(this.Bounds);
gp.AddRectangle(rec);
this.Invalidate();
}
}。