当SetROP2(R2_NOT)不能擦除文字时

本文介绍了一种在Windows中实现文字擦除效果的技术。通过将文字绘制到内存设备上下文(DC),随后使用BitBlt函数将内存DC的内容复制回屏幕,从而达到擦除文字的效果。这种方法适用于需要频繁更新或擦除屏幕文字的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 http://hi.baidu.com/ilotus_y/blog/item/01110a3e35e755fd838b13c7.html

对于擦除屏幕上的图形如矩形、三角形等,两次调用
SetROP2(hdc,R2_XORPEN);
Rectangle();
就可以产生先输出矩形,然后擦除的效果。

但对于擦除文字,两次调用
SetROP2(hdc,R2_XORPEN);
TextOut();
却不能得到输出文字后再擦除的效果。

============================

寫字前,把寫字的矩形BitBLt到一個内存DC上面,然後抹字的時候在從那個内存DC BitBlt回來。

============================

OnDraw里
CDC mem;
CBitmap memmap;
mem.CreateCompatibleDC(pDC);
memmap.CreateCompatibleBitmap(m_pDC,1000,1000);
CBitmap *memoldmap=mem.SelectObject(&memmap);
/*
在这里画你的字,对mem的```
*/
pDC-> BitBlt(0,0,1000,1000,&mem,0,0,SRCCOPY);
mem.SelectObject(memoldmap);
memmap.DeleteObject();


重载BOOL CXXXView::OnEraseBkgnd(CDC* pDC)
直接return TRUE;

===================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值