作者: crystal_lz
查看: 1263|回复: 1
打印 上一主题 下一主题

[源码] 【开源】GDI手撸一个TextBox

[复制链接]
跳转到指定楼层
楼主
查看: 1263|回复: 1
项目地址:https://github.com/DebugST/STTextBox


STTextBox是一个开源的WinFrom控件,纯GDI绘制,支持Emoji表情符号、所有颜色支持Alpha、并且支持自定义文本样式等。原本应当还有更多的功能,但是由于一些其他原因两个月前就暂停了开发,但是又不想烂在手里,所以删除了一些代码后发布至了GitHub


开发过程中还衍生出另外两个开源项目:

https://github.com/DebugST/emoji-svg-render

https://github.com/DebugST/STGraphemeSplitter

https://blog.csdn.net/crystal_lz/article/details/126096097





文本框中所有的颜色均支持设置Alpha,当然代价就是渲染速度会变慢。



SetTextStyleMonitors可支持多个样式监视器,并且优先级按照先后顺序排列,接口非常灵活,既可以简单也可以非常复杂,截图中的Demo是一个非常简单的实现,因为它仅仅需要监视文本中的StyleDemo关键字即可,然后单独为它制定文本样式。

而内置的CSharpStyleMonitor就是一个复杂的实现。可以看到所有的截图中代码高亮都非常的全面,而不仅仅是.Net语法的关键字,属性 函数 类 符号 数字都被高亮显示了,因为在CSharpStyleMonitor中实现了一个简单的词法分析器用于解析CSharp的语法规则。至于其他语言。。。。累了。。。只想摆烂。。

在STTextBox发布的时候内置了4个样式监视器,分别为:KeyWordStyleMonitor CSharpStyleMonitor LinkStyleMonitor SelectionStyleMonitor,其功能分别为:指定任意关键字和样式、CSharp语法高亮、超链接样式,与被选中单词一样的关键字高亮。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播
回复 论坛版权

使用道具 举报

沙发
boxxie 发表于 2022-11-29 08:58:05 | 只看该作者

学习了,多谢楼主分享哟
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-4-26 04:57, Processed in 0.547972 second(s), 31 queries , Gzip On.

快速回复 返回顶部 返回列表