用C#怎么实现图片放大一倍和缩小一倍。

Picturebox控件显示图片,两个button控件,一个放大一个缩小,麻烦帮忙写下代码。。。... Picturebox控件显示图片 ,两个button控件,一个放大一个缩小,麻烦帮忙写下代码。。。 展开
 我来答
百度网友e1b1222
推荐于2017-10-03 · TA获得超过955个赞
知道小有建树答主
回答量:470
采纳率:66%
帮助的人:333万
展开全部
  1. 设置图片的长宽

  2. 用插值算法


之前写过一个缩小的,放大也是一样的,供楼主参考。

        /// <summary>
        /// 获取缩小后的图片
        /// </summary>
        /// <param name="bm">要缩小的图片</param>
        /// <param name="times">要缩小的倍数</param>
        /// <returns></returns>
        private Bitmap GetSmall(Bitmap bm, double times)
        {
            int nowWidth = (int)(bm.Width / times);
            int nowHeight = (int)(bm.Height / times);
            Bitmap newbm = new Bitmap(nowWidth, nowHeight);//新建一个放大后大小的图片

            if (times >= 1 && times <= 1.1)
            {
                newbm = bm;
            }
            else
            {
                Graphics g = Graphics.FromImage(newbm);
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.DrawImage(bm, new Rectangle(0, 0, nowWidth, nowHeight), new Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel);
                g.Dispose();
            }
            return newbm;
        }
更多追问追答
追问
我在网上找的也是这个方法,现在遇到这样的情况,我调用这个方法,无论传进去的长宽是原图的1/2,还是2倍,图片最后它都是缩小1/2.我想弄清楚,真正缩小的代码是哪一行啊??
追答
这个函数的意思是将传进来的Bitmap重绘成另外的大小。

Graphics g = Graphics.FromImage(newbm);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
这几句是设定绘制的参数。
g.DrawImage(bm, new Rectangle(0, 0, nowWidth, nowHeight), new Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel);
这一句是核心,是绘制的的函数。
匿名用户

2014-06-18
展开全部
Picturebox控件大小不变,只改变图片大小吗?
追问
嗯嗯,可以
追答

最简单的方法,设置pictureBox1的SizeMode属性为Zoom,


        //放大
        private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Width += 50;
            pictureBox1.Height += 50;
        }
        //缩小
        private void button2_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Width > 50 && pictureBox1.Height > 50)
            {
                pictureBox1.Width -= 50;
                pictureBox1.Height -= 50;
            }
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式