我正在编写一个显示大量文本的应用程序.这不是单词和句子,它是在CP437字符集中显示的二进制数据.目前的形式:
我在绘制这些角色时遇到了问题.我需要逐个绘制每个角色,因为后来我想应用不同的颜色.这些角色也应该具有透明背景,因为稍后我想在背景中绘制具有不同颜色的部分和范围(根据某些标准对这些角色进行分组).
该应用程序同时支持多个打开的文件,但是当打开多个文件时,快速i7上的绘图开始变得明显,因此可能写得很糟糕.
在Qt5中绘制此类数据的最佳方法是什么?我应该将字符预先渲染到位图并从那里开始,或者实际上可以通过使用普通的Qt函数绘制文本来绘制大量字符吗?
编辑:我正在使用一个正常的QFrame小部件,它paintEvent使用QPainter.这是一种错误的做法吗?我已经阅读了一些文档QGraphicsScene,我记得它最适用于窗口小部件需要对它绘制的对象进行一些控制的情况.我不需要任何控制我画的东西; 我只需要绘制它,就是这样.在我画完之后,我不会引用任何特定的字符.
小部件有2000行,所以我不会粘贴整个代码,但目前我的绘图方法是这样的:
cache包含256个条目的table(),将迭代器计数器放到i变量中,QStaticText对象,其中包含有关由i变量中的ASCII代码标识的字符的绘图信息,QStaticText从所述cache的表.因此,要绘制ASCII字符0x7A,我将从表中的QStaticText索引0x7a中cache查找,并将此QStaticText对象提供给QPainter对象.我也尝试了一种不同的方法,在一次QPainter::drawText调用中渲染整行,实际上它更快,但我已经失去了用不同颜色着色每个角色的可能性.我想有这种可能性.