C# 使用PictureBox控件,如何实现图片的缩放

本文介绍了在C#中使用PictureBox控件进行图片缩放的方法,包括通过调整控件尺寸和直接修改图片属性来实现缩放。示例代码展示了如何实现这一功能,并提到了图片剪切的相关内容。

先将图片填入进PictureBox内:

m_MyImage = new Bitmap( "D:\\O0002.jpg");

m_PicBoxJPG.Image = PictureScale( m_MyImage, m_MyImage.Width, m_MyImage.Height );

实现缩放功能由下面两种方法:

一、通过picturebox的属性修改

            int nWidth = m_PicBoxJPG.Width;
            int nHeight = m_PicBoxJPG.Height;
            m_PicBoxJPG.Width = (int)( nWidth * ZOOM_RATIO );
            m_PicBoxJPG.Height = (int)( nHeight * ZOOM_RATIO );

二、修改picturebox里图片属性,实现缩放(不会影响picturebox的属性)

实现图片的剪切功能


		Bitmap PictureScale( Image SourImage, int nImageWidth, int nImageHeight )
		{
			//int nwidth = 0;
			//int nheight = 0;

// 实现图片自适应填入picturebox,相当于zoom的形式
			if( ( SourImage.Width > m_PicBoxJPG.Width ) || ( SourImage.Height > m_PicBoxJPG.Height ) ) {
				if( SourImage.Height * m_PicBoxJPG.Width < SourImage.Width * m_PicBoxJPG.Height ) {
					nImageHeight = ( m_PicBoxJPG.Width * SourImage.Height ) / SourImage.Width;
					nImageWidth = m_PicBoxJPG.Width;
				}
				else {
					nImageHeight = m_PicBoxJPG.Height;
					nImageWidth = ( SourImage.Width * m_PicBoxJPG.Height ) / SourImage.Height;
				}
			}
			else {
				nImageHeight = SourImage.Height;
				nImageWidth = SourImage.Width;
			}

			Bitmap b = new Bitmap( nImageWidth, nImageHeight );

			Graphics g = Graphics.FromImage( b );
//需要绘制的原始图片区域
			Rectangle srcRect = new Rectangle( 0, 0, SourImage.Width, SourImage.Height );
//	新图的大小		
           Rectangle destRect = new Rectangle( 0, 0, nImageWidth, nImageHeight );
			g.DrawImage( SourImage, destRect, srcRect, GraphicsUnit.Pixel );
			g.Dispose();
			return b;
		}

//
//
//

		void DoMagnify( object sender, ActionEventArgs e )
		{
			int nWidth = m_PicBoxJPG.Width;
			int nHeight = m_PicBoxJPG.Height;
//ZOOM_RATIO 缩放比例
			m_PicBoxJPG.Width = (int)( nWidth * ZOOM_RATIO );
			m_PicBoxJPG.Height = (int)( nHeight * ZOOM_RATIO );

			int nImageWidth = (int)( m_PicBoxJPG.Image.Width * ZOOM_RATIO );
			int nImageHeight = (int)( m_PicBoxJPG.Image.Height * ZOOM_RATIO );
// 重新绘图再填入
			Bitmap b = PictureScale( m_MyImage, nImageWidth, nImageHeight );
			m_PicBoxJPG.Image = b;
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值