背景:

GDI+ 绘制文本 时,如果 背景是透明的 —— 则会出现 锯齿。

  1. //其实,我不用这三个 属性 好多年了
  2. //而且,这三个属性 在关键时刻还有可能 帮倒忙
  3. //关键是:这三个属性,鸟用都没有 —— 不能消除锯齿
  4. g.SmoothingMode = SmoothingMode.HighQuality;
  5. g.InterpolationMode = InterpolationMode.HighQualityBicubic;
  6. g.CompositingQuality = CompositingQuality.HighQuality;

解法:

  1. Bitmap bitmap0 = new Bitmap(, );
  2. using (Graphics g = Graphics.FromImage(bitmap0))
  3. {
  4. g.Clear(Color.Transparent); //以透明色 作为背景
  5. g.DrawString("科技救国 (透明色背景)", new Font("微软雅黑", ), new SolidBrush(Color.Black), new PointF(, ));
  6. bitmap0.Save(@"D:\XXX\TestString0.png", ImageFormat.Png);
  7. }
  8.  
  9. Bitmap bitmap1 = new Bitmap(, );
  10. using (Graphics g = Graphics.FromImage(bitmap1))
  11. {
  12. g.Clear(Color.White);
  13. g.DrawString("科技救国 (白色背景)", new Font("微软雅黑", ), new SolidBrush(Color.Black), new PointF(, ));
  14. bitmap1.Save(@"D:\XXX\TestString1.png", ImageFormat.Png);
  15. }
  16.  
  17. Bitmap bitmap2 = new Bitmap(bitmap1.Width, bitmap1.Height);
  18. for (int x = ; x < bitmap1.Width; x++)
  19. for (int y = ; y < bitmap1.Height; y++)
  20. {
  21. //这段代码还有很大的优化空间
  22. Color color = bitmap1.GetPixel(x, y);
  23. byte a = (byte)(((short)( - color.R) + (short)( - color.G) + (short)( - color.B)) / );
  24. Color color2 = Color.FromArgb(a, , , );
  25. bitmap2.SetPixel(x, y, color2);
  26. }
  27.  
  28. bitmap2.Save(@"D:\XXX\TestString2.png", ImageFormat.Png);

结果:

『备注』GDI+ 绘制文本有锯齿,透明背景文本绘制的更多相关文章

  1. 『备注』&#x; 格式 的编码转换

    在很多 网站(或者很多 WebService), 我们总能看到 Ӓ &#A22A;  这种格式 的编码. 如何将这种编码 转换成 实际文本,C#代码如下: //各种 幺蛾子网页图标 请参见: ...

  2. 『TensotFlow』RNN中文文本_下_暨研究生开学感想

    承前 接上节代码『TensotFlow』RNN中文文本_上, import numpy as np import tensorflow as tf from collections import Co ...

  3. 『TensotFlow』RNN中文文本_上

    中文文字预处理流程 文本处理 读取+去除特殊符号 按照字段长度排序 辅助数据结构生成 生成 {字符:出现次数} 字典 生成按出现次数排序好的字符list 生成 {字符:序号} 字典 生成序号list ...

  4. 『Nltk』常用方法

    引言 在nltk的介绍文章中,前面几篇主要介绍了nltk自带的数据(书籍和语料),感觉系统学习意义不大,用到哪里看到那里就行(笑),所以这里会从一些常用功能开始,适当略过对于数据本体的介绍. 文本处理 ...

  5. 看雪论坛 破解exe 看雪CTF2017第一题分析-『CrackMe』-看雪安全论坛

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 逆向 黑客 破解 学习 论坛 『CrackMe』 http://bbs.pediy.co ...

  6. D3力布图绘制--在曲线路径上添加文本标记

    今天遇到一个在曲线路径上标识文本标记的问题,找到一个比较好的解决思路,在这里分享下: 使用d3建立的Force Layout,加上自定义的箭头形状,将多条连接线线改成弧线(https://www.cn ...

  7. 『WPF』DataGrid的使用

    原文 『WPF』DataGrid的使用 几点说明 这里主要是参考了MSDN中关于DataGrid的说明 这里只会简单说明在WPF中,DataGird最简单的使用方法 对于MSDN中的翻译不会很详细,也 ...

  8. 『Matplotlib』数据可视化专项

    一.相关知识 官网介绍 matplotlib API 相关博客 matplotlib绘图基础 漂亮插图demo 使用seaborn绘制漂亮的热度图 fig, ax = plt.subplots(2,2 ...

  9. 『Json』常用方法记录

    json模块可以把字典结构改写为string然后保存,并可以反向读取字典 pickle模块则可以持久化任意数据结构 但是即使同样是字典数据结构,两个包也是有差别的, json字典value不支持其他对 ...

随机推荐

  1. python笔记:#003#PyCharm 的初始设置

    PyCharm 的初始设置(知道) 目标 恢复 PyCharm 的初始设置 第一次启动 PyCharm 新建一个 Python 项目 设置 PyCharm 的字体显示 PyCharm 的升级以及其他 ...

  2. JS 小技巧整理

    一.javascript中调用函数并不一定严格执行指定的参数个数.(函数定义时的参数个数和调时指定的参数个数并不一定要相等) function showInfo(arg1) { var defindl ...

  3. cxf webservice生成客户端代码及调用服务端遇到的问题

    1.  从网上下载cxf开发的工具 apache-cxf-3.1.4.zip, 解压文件,找到apache-cxf-3.1.4\bin目录,里面包含一个wsdl2java文件 2. 设置环境变量 1. ...

  4. Python零散函数

    1. python json.dumps() json.dump()的区别 注意cat ,是直接输出文件的内容 load和loads都是实现"反序列化",区别在于(以Python为 ...

  5. 基于elk 实现nginx日志收集与数据分析。

    一.背景 前端web服务器为nginx,采用filebeat + logstash + elasticsearch + granfa 进行数据采集与展示,对客户端ip进行地域统计,监控服务器响应时间等 ...

  6. Python_heapq

    import heapq #导入heapq堆模块 import random data = random.sample(range(1000),10) print(data) heapq.heapif ...

  7. 用Promise实现:带延时功能的链式调用

    // 1) 调用方式 new People('whr').sleep(3).eat('apple').sleep(5).eat('durian'); // 2) 打印结果 'hello, whr' - ...

  8. CF泛做

    CF Rd478 Div2 A Aramic script 题意:给定几个字符串,去重后,求种类 思路:直接map乱搞 #include<bits/stdc++.h> using name ...

  9. (WCF初体验)WCF服务器诊断

    WCF服务器搭建好之后,不管是客户端访问还是本地调试,出个问题抛出来的原因往往在我们看来都是不知所以然的,更可能是跑出来的问题和真正的问题差了很远,比如"通信对象 System.Servic ...

  10. C#实现联通短信Sgip协议程序源码

    此程序为中国联通Sgip协议程序接口,适合在中国联通申请了短信发送端口的公司使用. 短信群发已经成为现在软件系统.网络营销等必不可少的应用工具.可应用在短信验证.信息群发.游戏虚拟商品购买.事件提醒. ...