[分享]一个简单的彩色文字图生成组件

dylike 2011-01-20 09:16:08
本来是用来替代Label,后来为了更多的可用之处就没有做成控件,东西比较简单,高手可略过此文.

彩色文字图

源文示例1:

<255,255,255>内含1.10 正式版单机测试用<000,255,000>辅助工具<255,255,255>,是为方便 D2 1.10 上的单机测试而制作的物品生成补丁和人物存档,使用该工具<255,000,000>可能会降低游戏乐趣<255,255,255>,请斟酌使用!

<200,200,128>暗金装备
<255,255,000>高级装备
<255,000,000>嗜血装备
<000,255,000>绿色装备
<000,000,255>蓝色装备
<100,100,100>无形装备

<200,200,128>头盔 项链 武器 衣服 盾牌 手套 戒指 腰带 靴子

其中每种颜色以<###,###,###>格式表示<RRR,GGG,BBB>


源文示例2:
<255,255,255>我是小丁,嘻嘻,你能找到我吗?ABCDEFGHIJKLMNOPQRSTUVWXYZ
嘿嘿!我在这里哦!

效果图1:常规样式+投影+描边


效果图2:常规样式+描边


效果图3:单输出样式(忽略颜色代码,并应用渐变色参数)+描边


效果图4:单输出样式(忽略颜色代码,并应用渐变色参数)+投影+描边


效果图5:常规样式+文字间距+描边


效果图6:常规样式+文字行距+描边


效果图7:实际使用示例效果(注:文字内容只为填充字数,非正式内容,请勿揭语病)



样式可以随意组合,如:常规+间距+行距+投影+描边等,英文水平有限,属性名称不是很规范,抱歉.

----------------------------------------------
属性列表:

名称 类型 说明
DrawTextOutLine Boolean 是否绘制文字描边
DrawTextShadow Boolean 是否绘制投影,不支持投影平移
Text String 源文,包含颜色代码的源文
TextRect Rectangle 给定区域边界,一般为欲设置结果图的控件大小
TextOutLineColor Color 文字描边颜色
TextFont Font 绘制文字的字体
TextRenderHint TextRenderHint 字符渲染样式
TextBitmapSize Size 最终生成的结果图的大小
CharWidth Integer 字符间距增量
CharLine Integer 字符行距增量
OutBitmap Bitmap 最终生成的结果图
OutputText String 过滤颜色代码后的内容


其他:
UpdateBitmapEventHandler
在结果图生成完成时发生

MakeNomalTextBitmap(Color1,Color2)
忽略颜色代码而使用纵向渐变色(从Color1到Color2的纵向渐变)绘制



示例代码:

'引用并定义该类
Private WithEvents CT As New DSCLBP.ColorText

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With CT
.DrawTextOutLine = True '绘制描边
.TextOutLineColor = Color.FromArgb(255, 0, 0, 0) '描边颜色
.TextRect = New Rectangle(0, 0, Panel1.Width, Panel1.Height) '给定最大容纳绘制区域为Panel1的矩形
.DrawTextShadow = True '绘制投影
End With
End Sub

'绘制9号宋体文字内容并使用简边渲染
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CT.TextFont = New Font("宋体", 9, FontStyle.Regular, GraphicsUnit.Point)
CT.TextRenderHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
CT.Text = TextBox1.Text
End Sub

'绘制13号汉仪娃娃篆简并使用柔滑渲染,同时忽略颜色代码而使用渐变样式
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
CT.TextFont = New Font("汉仪娃娃篆简", 13, FontStyle.Bold, GraphicsUnit.Point)
CT.TextRenderHint = Drawing.Text.TextRenderingHint.AntiAlias
CT.Text = TextBox2.Text
CT.MakeNomalTextBitmap(Color.Yellow, Color.Red)
End Sub


'当结果图完成时触发该事件,这样可以免去主动获取OutBitmap的过程
Private Sub CT_UpdateBitmap(ByVal B As System.Drawing.Bitmap) Handles CT.UpdateBitmap
Panel1.BackgroundImage = B
End Sub

[下载]
...全文
327 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylike 2011-01-20
  • 打赏
  • 举报
回复
图片扩展名打错了,不好意思


效果图1:常规样式+投影+描边


效果图2:常规样式+描边


效果图3:单输出样式(忽略颜色代码,并应用渐变色参数)+描边


效果图4:单输出样式(忽略颜色代码,并应用渐变色参数)+投影+描边


效果图5:常规样式+文字间距+描边


效果图6:常规样式+文字行距+描边


效果图7:实际使用示例效果(注:文字内容只为填充字数,非正式内容,请勿揭语病)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧