用C#怎么实现图片放大一倍和缩小一倍。
Picturebox控件显示图片,两个button控件,一个放大一个缩小,麻烦帮忙写下代码。。。...
Picturebox控件显示图片 ,两个button控件,一个放大一个缩小,麻烦帮忙写下代码。。。
展开
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询