在处理图片加印logo的过程中,主要学习了使用.NET中的GDI+来处理图像的相关知识.GDI+包括很多的类、结构和枚举,为开发过程提供的保障和指导。

效果图:

  

首先,阅览下系列的命名空间:
System.Drawing:提供对GDI+基本图形图像功能的访问,Graphics包含在此命名空间中
System.Drawing.Drawing2D:提供高级的二维和矢量的图形功能,能够进行二维图形和二维游戏的开发

和编写
System.Drawing.Imaging:提供高级的图像处理功能
System.Drawing.Text:提供高级的文字处理及排版功能
System.Drawing.Printing:提供图形打印及所需要的类
System.Drawing.Design:提供开发UI设计时所需要的类
接下来是对一些类的认识:
Bitmap:在Bitmap上使用图形工具,并在其中存储图形图像的绘图面板
Graphics:提供直线、曲线、多边形等绘画方法,也提供对一些位图的处理,例如平稳,缩放等
Pen:提供直线、曲线等功能需要的画笔属性
Brush:提供文本填充和图形绘画,可以填充图形如圆形、椭圆和多边形等
Color:提供颜色的枚举,用于定义Pen和Brush的颜色
Font:提供文本的字体属性,定义文本的字体类型,样式和大小等
Point:用于定义有序的坐标对,这些坐标能够定义二维平面上的点
Size:定义区域的大小
Image:用于支持位图、指针和图标等文件类型
Rectangle:用于定义矩形区域
StringFormat:用于定义文本在位图上的对齐方式等属性
简而言之,Bitmap就相当于绘画时需要的纸,图形能够绘画到纸上面。而Graphics就好比是绘画的人,

因为人能够提供只写、曲线、多边形等绘画方法,而Pen和Brush相当于绘画工具,如铅笔刷等,Color

就相当于绘画时所需要的颜料。
下面贴上一个简单的例子,Bitmap bmp = new Bitmap(200,200);//创建Bitmap对象
   Graphics gr = Grahpics.FromImage(bmp);//创建Graphics对象
   Pen pen = new Pen(Color.Red,10);//创建画笔
   gr.DrawLine(pen,0,0,50,20);//绘制直线
   bmp.Save(outputStream,ImageFormat.Gif);//输入图形
   //对象需要释放
   bmp.Dispose();
   gr.Dispose();
   pen.Dispose();
另外,有时在网络上访问图片,清晰度可以的情况下大小越小越好,或是用手机浏览时不支持32位的

PNG图片,故而转换为Png8位的格式。通过引用COM组件Photoshop和Illustrator,外部启动Photoshop(

这里用CS2版本)便可完成。       

/// <summary>
/// convert to PNG8
/// </summary>
/// <param name="src">original picture</param>
public void ToPNG8(string src)
{
Application psApp
= new ApplicationClass();
Document psDoc
= psApp.Open(src, null);
File.Delete(src);

ExportOptionsSaveForWeb png8ExportOption
= new ExportOptionsSaveForWeb();
png8ExportOption.PNG8
= true;
png8ExportOption.Format
= PsSaveDocumentType.psPNGSave;
psApp.ActiveDocument.Export(src, PsExportType.psSaveForWeb, png8ExportOption);
psDoc.Close(PsSaveOptions.psDoNotSaveChanges);
psDoc
= null;
}

作者: facing 发表于 2011-05-12 16:34 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架