MFC中richedit控件设置为透明后出现文字残留现象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中richedit控件设置为透明后出现文字残留现象相关的知识,希望对你有一定的参考价值。

向下滑动后

请问这样的问题如何解决啊?

透明度,颜色,背景图都有关系。背景图的格式也有关系。具体你这个问题,我没有遇到过。

看到你的截图,感觉象是richedit本身出错了。你要保证你的操作系统的richedit的补丁安装好了。以前有些操作系统的richedit的dll有一些BUG。

另外透明度的绘制通常包括这几步:
1.背景图绘制
2.前景图按一个算法,通常是做平均,迭加。不过richedit有可能是直接drawtext到canvas(dc)上的。这时你的笔的颜色,背景的颜色,好象有些绘制里还会有一个mask设置。
3.将合成后的图从后台缓存DC里绘制到前台控件上
4.处理滚动
滚动通常是快速完成,不会再重新1,2,3。 往往是从后台DC里做一次移位就绘制出来。
如果透明这个算法是显卡处理的。有硬件加速,那么透明应该是在从后台DC会绘制出来计算的。

所以你还要检查一下你的显卡的设置,把有些选项关闭,尽量用软件加速。关闭硬件加速看看。
参考技术A 将richedit重画

mfc怎么修改静态文本控件文字颜色

参考技术A 在生成的类中添加重载的虚函数OnCtlColor(CDC
*pDC,CWnd
*pWnd,UINT
nCtlColor)。
可以在该函数中设置pDC->SetBkMode(TRANSPARENT);将文本的背景设置为透明。
可以在该函数中设置pDC->SetTextColor(RGB(255,0,0));将文本的颜色设置为红色。
也可以指定某一静态文本的字体颜色,可以加如下判断:
switch(pWnd->GetDlgCtrlID())

case
IDC_INFO:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));

这个判断,可以仅仅将ID号为IDC_INFO的静态文本的字体颜色设置为红色。

以上是关于MFC中richedit控件设置为透明后出现文字残留现象的主要内容,如果未能解决你的问题,请参考以下文章

mfc怎么修改静态文本控件文字颜色

如何在MFC中使用richedit控件_RICHEDIT_VER over 2.1

delphi 2010 richedit控件字体问题!

MFC对话框加上PNG图片后,图片上的控件可以设置透明吗?

MFC 对话框不显示,返回-1 原因

VB6 自定义控件透明问题