刚学习C#,萌新追求快速入门,如果注释有不当之处,请指教。
DrawImage有一堆的重载函数,看微软.NET Framework 4.8的文档,心态爆炸。
1、强行理解了一波,代码:
命名空间:
using System.Drawing;
函数中内容:
Bitmap src_jpg = new Bitmap("pikachu.jpg"); //读入原图,这张原图尺寸为533*300
Rectangle srcRect = new Rectangle(50, 0, 300, 300); //原图中的要抠出的一小块图,这一小块的左上角的坐标为(50, 0),长为300,高为300
Rectangle destRect = new Rectangle(0, 0, 300, 300); //新图在画布上的左上角坐标为(0, 0),新图长300,高300
Bitmap new_jpg = new Bitmap(destRect.Width, destRect.Height); //放置新图的画布,照搬新图的的大小
Graphics g = Graphics.FromImage(new_jpg); //g就像一只画笔,准备在new_jpg上作画
g.DrawImage(src_jpg, destRect, srcRect, GraphicsUnit.Pixel);
new_jpg.Save("new_pikachu.jpg"); //保存图片
src_jpg.Dispose(); //类似于关闭文件流,否则程序不终止,"pikachu.jpg"就处于被占用的状态
效果;
2、仅改动如下一行,原图要抠的图高300,而我偏要把新图变成高100。
(画布仍然跟随新图的长和高)
Rectangle destRect = new Rectangle(0, 0, 300, 100); //新图的尺寸为,左上角起始坐标为(0, 0),长为300,但高变成了100
效果:
3、继续仅改动这一行,新图在画布时的左上角起始点,不是在(0, 0)了,放到(150, 100)。
(画布仍然跟随新图的长和高)
Rectangle destRect = new Rectangle(150, 100, 300, 300); //新图的左上角起始坐标为(150, 100)
效果:
4、仅改动下一行,画布的长和高自定义,设置为长400,高400.
Bitmap new_jpg = new Bitmap(400, 400);
//之前是Bitmap new_jpg = new Bitmap(destRect.Width, destRect.Height);
效果:
完结撒花。