简单的C#进行图片操作
  最近做东西,需要在一个服务器已经存在的图片上,在上面画一些标注(只是简单的圆形矩形文字之类)。以前倒还真没有做过图形操作,不过听说挺简单的。就问了一下,大家说使用Graphics类。
那么,就可以简单得到下面的代码了。
 1
        // 得到图片
2
        System.Drawing.Image img = System.Drawing.Image.FromFile ( this.TextBox1.Text );
3
        Graphics g = Graphics.FromImage ( img );
4
        Pen p = new Pen ( Color.White, 2 );
5
        g.DrawImage ( img, 10, 10 );
6
        
7
        // 画圆和文字
8
        g.DrawEllipse ( p, 10, 10, 5, 5 );
9
        g.DrawString ( "这里是圆", new Font ( "宋体", 9 ), Brushes.White, new PointF ( 20, 20 ) );
10
11
        // 填充一个圆
12
        g.FillEllipse ( Brushes.White, 10, 10, 5, 5 );
13
14
        // 显示到页面上,不生成真正的文件
15
        Response.ContentType = "image/gif";
16
        img.Save ( Response.OutputStream, ImageFormat.Jpeg );
这样在页面上就显示一个图片了。并且画了一个圆。
        // 得到图片2
        System.Drawing.Image img = System.Drawing.Image.FromFile ( this.TextBox1.Text );3
        Graphics g = Graphics.FromImage ( img );4
        Pen p = new Pen ( Color.White, 2 );5
        g.DrawImage ( img, 10, 10 );6
        7
        // 画圆和文字8
        g.DrawEllipse ( p, 10, 10, 5, 5 );9
        g.DrawString ( "这里是圆", new Font ( "宋体", 9 ), Brushes.White, new PointF ( 20, 20 ) );10

11
        // 填充一个圆12
        g.FillEllipse ( Brushes.White, 10, 10, 5, 5 );13

14
        // 显示到页面上,不生成真正的文件15
        Response.ContentType = "image/gif";16
        img.Save ( Response.OutputStream, ImageFormat.Jpeg );PS:用一个笨方法把多个图合并到一个图里面:
 1
// 合并四张图
2
// 96*96的图
3
System.Drawing.Image imgBig = System.Drawing.Image.FromFile ( "c:\\qcd_logo2.PNG" );
4
// 48*48的图
5
System.Drawing.Image img = System.Drawing.Image.FromFile ( "c:\\qcd_logo.bmp" );
6
Graphics g = Graphics.FromImage ( imgBig );
7
g.DrawImage ( img, 0, 0 );
8
g.DrawImage ( img, 49, 0 );
9
g.DrawImage ( img, 0, 49 );
10
g.DrawImage ( img, 49, 49 );
// 合并四张图2
// 96*96的图3
System.Drawing.Image imgBig = System.Drawing.Image.FromFile ( "c:\\qcd_logo2.PNG" );4
// 48*48的图5
System.Drawing.Image img = System.Drawing.Image.FromFile ( "c:\\qcd_logo.bmp" );6
Graphics g = Graphics.FromImage ( imgBig );7
g.DrawImage ( img, 0, 0 );8
g.DrawImage ( img, 49, 0 );9
g.DrawImage ( img, 0, 49 );10
g.DrawImage ( img, 49, 49 );PS2:用一个方法截取合并后的图
 1
// 144*144的图
2
        System.Drawing.Image imgBig = System.Drawing.Image.FromFile ( "c:\\qcd_logo2.PNG" );
3
// 48*48的图
4
        System.Drawing.Image img = System.Drawing.Image.FromFile ( "c:\\qcd_logo.bmp" );
5
        Graphics g = Graphics.FromImage ( imgBig );
6
        Pen p = new Pen ( Color.Red, 2 );
7
// 全部合并,即3*3
8
        g.DrawImage ( img, 0, 0 );
9
        g.DrawImage ( img, 49, 0 );
10
        g.DrawImage ( img, 0, 49 );
11
        g.DrawImage ( img, 49, 49 );
12
        g.DrawImage ( img, 97, 0 );
13
        g.DrawImage ( img, 0, 97 );
14
        g.DrawImage ( img, 97, 97 );
15
        g.DrawImage ( img, 49, 97 );
16
        g.DrawImage ( img, 97, 49 );
17
        g.DrawEllipse ( p, 49, 49, 10, 10 );
18
        g.DrawString ( "这是圆", new Font ( "宋体", 9 ), Brushes.Red, new PointF ( 55, 55 ) );
19
20
// 切换到小图
21
        g = Graphics.FromImage ( img );
22
        // 截取的大图范围
23
        Rectangle rect = new Rectangle ( 49, 49, 48, 48 );
24
// 截取大图
25
        g.DrawImage ( imgBig, 0, 0, rect, GraphicsUnit.Pixel );
26
27
        // 显示到页面上,不生成真正的文件
28
        Response.ContentType = "image/gif";
29
        img.Save ( Response.OutputStream, ImageFormat.Jpeg );
// 144*144的图2
        System.Drawing.Image imgBig = System.Drawing.Image.FromFile ( "c:\\qcd_logo2.PNG" );3
// 48*48的图4
        System.Drawing.Image img = System.Drawing.Image.FromFile ( "c:\\qcd_logo.bmp" );5
        Graphics g = Graphics.FromImage ( imgBig );6
        Pen p = new Pen ( Color.Red, 2 );7
// 全部合并,即3*38
        g.DrawImage ( img, 0, 0 );9
        g.DrawImage ( img, 49, 0 );10
        g.DrawImage ( img, 0, 49 );11
        g.DrawImage ( img, 49, 49 );12
        g.DrawImage ( img, 97, 0 );13
        g.DrawImage ( img, 0, 97 );14
        g.DrawImage ( img, 97, 97 );15
        g.DrawImage ( img, 49, 97 );16
        g.DrawImage ( img, 97, 49 );17
        g.DrawEllipse ( p, 49, 49, 10, 10 );18
        g.DrawString ( "这是圆", new Font ( "宋体", 9 ), Brushes.Red, new PointF ( 55, 55 ) );19

20
// 切换到小图21
        g = Graphics.FromImage ( img );22
        // 截取的大图范围23
        Rectangle rect = new Rectangle ( 49, 49, 48, 48 );24
// 截取大图25
        g.DrawImage ( imgBig, 0, 0, rect, GraphicsUnit.Pixel );26

27
        // 显示到页面上,不生成真正的文件28
        Response.ContentType = "image/gif";29
        img.Save ( Response.OutputStream, ImageFormat.Jpeg );
                    
                
                
            
        
浙公网安备 33010602011771号