请教个问题,如何得到透明色的字体颜色,(非背景透明) 我想得到一个透明颜色的字体,去覆盖原来颜色的字体,达到“擦除”原来字的效果?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将CDC的绘图模式设置成R2_NOTXORPEN,并将背景颜色设置成TRANSPARENT,在擦除时在原位置上再绘制一下就清除了。示例代码如下: CDC *pDC = GetDC(); int nBkMode = pDC->SetBkMode(TRANSPARENT); int nDrawMode = pDC->SetROP2(R2_NOTXORPEN); //再绘制一下原先的文字,就相当于擦除了 pDC->TextOut(x, y, m_strPreText); //下面是绘制当前要显示的文字 pDC->TextOut(x, y, m_strCurText); m_strPreText = m_strCurText; pDC->SetBkMode(nBkMode); pDC->SetROP2(nBkMode); ReleaseDC(pDC);/*********************************************///注:在调用上面的代码之前你得有个地方先调用TextOut绘制一下第一次的文字(一定要调用)//m_strCurText:是当前要显示的文字内容//m_strPreText:是先前显示的文字内容 伪代码? 预设的str始终只有一个的,没有Pre和Cur的可能(不知道自己有没有搞错概念)??不知道有没有理解错,方法是在TextOut了新str后,用一个翻转模式的str去覆盖原来的字,变回原来的透明背景模式,然后再往下一个新步长TextOut一个str,再重复...初试用了这个方法去做(貌似要再增加了储存旧步长位置的变量,以供覆写吧?),可能新str和旧str擦除的切换速度太快,形成了画面看不到字(刷新太快?),就跟每步做一下Invalidate差不多了?不知道是不是这样... 如果只是实现跑马灯的效果,建议楼主把要显示的文字放到一个Static Text控件中,然后在OnTimer里移动这个Static Text控件就好了 是的,本来是想问如何获得一个背景色的颜色,RGB?关于擦旧字有个问题,是应该先擦了旧字加了步长才来写新字,还是写了新字才去擦旧字?谢谢! 当然得先擦旧字,然后写新字,这样才不会擦掉新字的部分。对话框默认的背景色是RGB(240, 240, 240) 因为想平滑一些,所设步长比较短,定时器间隔小,快速反复擦写,肉眼看起来的字也接近透明了打算换用移动StaticText的方法,在上面留字的话,还是CDC的TextOut,这样移动的话不也就跟原来差不多情况吗。不知道还有什么方法。 炫一下正在做的界面,累啊。 请教关于tab顺序的问题 求助 关于CRecordset访问Access数据库添加和修改出错的问题 论坛里没有出现过的问题,还请高人指点一二(在新建文档时在视图中加入提示问题) 关于CListCtrl的两个问题(拖放和自画),会不会的都请进来说两句。 谁用过CGridCtrl 关于句柄的一个很弱智的问题! 可以使用 CreateFileMapping 映射硬盘吗?急急 我想在SDI程序开始就马上显示一个对话框,怎么做?帮帮我。谢谢了。 在学习C++primer 请教大牛一个小问题 visual c++ 学习群
int nBkMode = pDC->SetBkMode(TRANSPARENT);
int nDrawMode = pDC->SetROP2(R2_NOTXORPEN);
//再绘制一下原先的文字,就相当于擦除了
pDC->TextOut(x, y, m_strPreText); //下面是绘制当前要显示的文字
pDC->TextOut(x, y, m_strCurText);
m_strPreText = m_strCurText;
pDC->SetBkMode(nBkMode);
pDC->SetROP2(nBkMode);
ReleaseDC(pDC);/*********************************************/
//注:在调用上面的代码之前你得有个地方先调用TextOut绘制一下第一次的文字(一定要调用)
//m_strCurText:是当前要显示的文字内容
//m_strPreText:是先前显示的文字内容
伪代码? 预设的str始终只有一个的,没有Pre和Cur的可能(不知道自己有没有搞错概念)??不知道有没有理解错,方法是在TextOut了新str后,用一个翻转模式的str去覆盖原来的字,变回原来的透明背景模式,然后再往下一个新步长TextOut一个str,再重复...初试用了这个方法去做(貌似要再增加了储存旧步长位置的变量,以供覆写吧?),可能新str和旧str擦除的切换速度太快,形成了画面看不到字(刷新太快?),就跟每步做一下Invalidate差不多了?
不知道是不是这样...
是的,本来是想问如何获得一个背景色的颜色,RGB?
关于擦旧字有个问题,是应该先擦了旧字加了步长才来写新字,还是写了新字才去擦旧字?
谢谢!
对话框默认的背景色是RGB(240, 240, 240)
因为想平滑一些,所设步长比较短,定时器间隔小,快速反复擦写,肉眼看起来的字也接近透明了
打算换用移动StaticText的方法,在上面留字的话,还是CDC的TextOut,这样移动的话不也就跟原来差不多情况吗。不知道还有什么方法。