当前位置:编程学习 > C#/ASP.NET >>

图片扩大填充

我要实现的是,首先用鼠标在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;
            }
        } --------------------编程问答--------------------
引用 3 楼 u010907139 的回复:
谢谢,你可以给具体代码讲解一下吗?


告诉你最起码的第一步:在你的鼠标move事件中,你需要跟已经记录的top、left、right、bottom坐标值做对比,记录鼠标画过的位置的整个的矩形四边的坐标。

这个如果想不明白,那么不用想更多其它的“技术”。 --------------------编程问答--------------------
引用 3 楼 u010907139 的回复:
谢谢,你可以给具体代码讲解一下吗?


给你的唯一讲解就是,遇到不懂的函数,自己查msdn。如果这个都不知道,别的就没有什么好讲解的了!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,