处理图像:
对位图进行操作:裁剪、变形、翻转和拷贝等。
裁剪图像:
Graphics g = e.Graphics;
Bitmap bmp = new Bitmap("C:\\Users\\ZQNB\\Desktop\\dog.png");
Rectangle sr = new Rectangle(10, 10, 100, 100); //图像中要绘制的部分
Rectangle dr = new Rectangle(0, 0, 100, 100); //绘制的位置,以控制缩放
g.DrawImage(bmp, dr, sr, GraphicsUnit.Pixel);
如图:
绘制原图左上角的部分。
变形、旋转和翻转图像:
DrawImage提供了一个重载方法,通过一个三点数组来对图像进行缩放、变形、水平或垂直的翻转以及旋转,实际上可以通过三个点处理很多变换的组合。
这三个点:第一个点指定源位图左上角点的目标位置, 第二个点指定源位图右上角点的目标位置,第三个点指定源位图左下角的目标位置。
关键代码:
Point[] destinationPoints = {
new Point(0,0),
new Point(100,0),
new Point(50,100)
};
g.DrawImage(bmp, destinationPoints);
变形:
翻转代码:
Point[] destinationPoints = {
new Point(0,100),
new Point(100,100),
new Point(0,0)
};
g.DrawImage(bmp, destinationPoints);
图:
旋转:
三个点分别为(200,0),(200,200),(0,0);结果类似于Bitmap.RotateFlip方法得到的效果,但使用该方法是处理在内存中的图像,而DrawImage只是在绘图表面的改变。
复制图像:
Rectangle r = new Rectangle(20, 20, 100, 100);
Bitmap bmp2 = bmp.Clone(r, System.Drawing.Imaging.PixelFormat.DontCare);
g.DrawImage(bmp, new Rectangle(0, 0, 100, 100));
g.DrawImage(bmp2,new Rectangle(110,0,100,100));
bmp2.Dispose();
复制的是源图像的一部分
保存图片:
把BMP转换为JPEG
每种图片有个字的优点,有时候需转换以更适用与某些用途。如JPEG格式更适用于压缩照片,Gif适用于计算机生成的图像,BMP是旧格式,更兼容。但是BMP格式图像占用空间大,下面把BMP转换为JPEG格式。
Graphics g = e.Graphics;
Bitmap bmp = new Bitmap("C:\\Users\\ZQNB\\Desktop\\dog.png");
bmp.Save("C:\\Users\\ZQNB\\Desktop\\dog.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
自己试试效果,本人试过确实在桌面上生成了dog.jpg图片。