加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

C#中CGI+绘图知识:颜色透明度及消除锯齿

[日期:2013-03-20] 作者: 来源: [字体: ]

C#绘图过程中经常遇到的几个问题就是:如何设置颜色透明度?如何消除图片及文字锯齿,让文字看起来更光滑?这里将一一解说。

颜色透明度:Alpha值

Color也可以设定Alpha值,也就是透明度。如Color.FromArgb(120,255,255,255)。FromArgb有四个参数,第一个就指定了Alpha值。
后面三个是颜色值RGB。
Alpha值的范围是0~255,0表示完全透明,255表示不透明。
看一个半透明的画刷示例吧:
private void formPaint(Object sender, PaintEventArgs e)
{
//创建路径
GraphicsPath path = new GraphicsPath();
Rectangle rect = new Rectangle(0, 0, 100, 100);
SolidBrush strBrush=new SolidBrush(Color.Orange);
e.Graphics.DrawString("ABCDEFGHIJK", new Font("黑体", 20f), strBrush, rect);
path.AddRectangle(rect);
//创建路径画刷
PathGradientBrush brush = new PathGradientBrush(path);
//中心点颜色
brush.CenterColor = Color.FromArgb(120,255,255,255);
//路径(点)上的颜色
brush.SurroundColors = new Color[] { Color.FromArgb(120,0,0,0)};
//用路径画刷填充一个矩形
e.Graphics.FillRectangle(brush, rect);
}
效果图:

如果画刷的颜色没有设置Alpha(透明)值,那么是看不到显示的字符串的。

反锯齿

消除线条的锯齿,通过设置Graphics类里的SmoothingMode属性成员来完成,这是一个枚举类型。

设置消除锯齿的示例语句: e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

消除了锯齿,线条看起来就平滑了许多。可以看一下对比的效果图,左边图形没有消除锯齿。

对应代码是:

Pen pen=new Pen(Color.Green,2);
Rectangle rect1 = new Rectangle(0, 0, 100, 100);
e.Graphics.DrawEllipse(pen, rect1);
//消除锯齿
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
//100宽,100高
Rectangle rect2 = new Rectangle(100, 0, 100, 100);
e.Graphics.DrawEllipse(pen, rect2);
SmoothingMode枚举还有一些其它成员,可以设置不同程度的反锯齿,也可以设置不消除锯齿。

文本反锯齿
显示的文本要消除锯齿设置TextRenderingHint就可以了。
示例代码:
private void formPaint(Object sender, PaintEventArgs e)
{
SolidBrush brush = new SolidBrush(Color.Green);
e.Graphics.DrawString("ABCDEFGHIJKL", new Font("宋体", 15f), brush, 0, 20);
//消除锯齿
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
e.Graphics.DrawString("ABCDEFGHIJKL", new Font("宋体", 15f), brush, 0, 50);
}
效果图:上面的文本没有消除锯齿

关键词:绘图  透明  锯齿  CGI 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (2)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 匿名 发表于 2017/8/16 19:34:16
博主您好,图片怎么消除锯齿
第 1 楼
* 匿名 发表于 2016/12/24 18:02:33
http://www.blue1000.com/bkhtml/c14/2014-05/71562p2.htm 趣味运动会新闻稿 http://www.135995.com/show/15983.html 2017年大一新生军训新闻稿 http://www.135995.com/show/15982.html