图片扩大填充
我要实现的是,首先用鼠标在Panel控件里画出某块图片,然后按键盘Enter按钮扩大鼠标画的那块填充整个Panel,最后按键盘Esc按钮还原成原来的那样。 鼠标 --------------------编程问答-------------------- 可以使用Graphics这个类来完成画图功能了,具体实现可以看看下面的链接:http://www.cnblogs.com/zihuatanejo/articles/1392689.html --------------------编程问答-------------------- 这个简单,其实就是做了 “抠图-备份-放大” 处理而已,当你鼠标画出一个区域后,将改区域图像抠出作为备份的BITMAP,然后当enter时,执行放大图像处理,并把放大的图像赋值给PANEL,当esc时,将原始图像赋值给panel就OK了,具体抠图,使用Graphic.path相关功能处理,放大缩小随便找一下,网上多了去了。。。 --------------------编程问答-------------------- 谢谢,你可以给具体代码讲解一下吗? --------------------编程问答-------------------- --------------------编程问答-------------------- 抠图:
1,用鼠标画出一个闭合区域,获取区域边界点进行抠图:
用你封闭区域的点构建GraphicsPath,再用这个GP构建区域,在该区域绘图保存即可。比如:
GraphicsPath gp = new GraphicsPath();
gp.AddXXX(yourData);
Region region = new Region(gp);
graphics.FillRegion(Brushes.Red, region); //也可以画图
//最后保存即可。将图像保存为一个临时的Bitmap temp;
2,图像放大:
//定义图像缩放函数
public Bitmap PZoom(Bitmap a, float s, float v)
{
try
{
Bitmap bmp = new Bitmap((int)(a.Width * s), (int)(a.Height * v), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.ScaleTransform(s, v);
g.DrawImage(a, 0, 0, a.Width, a.Height);
a = bmp;
return a;
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
return null;
}
} --------------------编程问答--------------------
告诉你最起码的第一步:在你的鼠标move事件中,你需要跟已经记录的top、left、right、bottom坐标值做对比,记录鼠标画过的位置的整个的矩形四边的坐标。
这个如果想不明白,那么不用想更多其它的“技术”。 --------------------编程问答--------------------
给你的唯一讲解就是,遇到不懂的函数,自己查msdn。如果这个都不知道,别的就没有什么好讲解的了!
补充:.NET技术 , C#