当前位置:编程学习 > wap >>

WM中怎么画一个空心字

在MFC下可以用
pDC->beginpath();
pdc->textout();
ppDC->endpath();
来解决,但是beginpath在WM中不能用,有什么可以实现的方法吗? --------------------编程问答-------------------- 装个空心字体吧........ --------------------编程问答-------------------- 什么字体在mobile上能用 --------------------编程问答-------------------- --------------------编程问答-------------------- 不知道能不能回复! --------------------编程问答-------------------- 不知道能不能回复! --------------------编程问答-------------------- 1、将字先写到一个内存DC(假定MemDC)中(写字可以用任何颜色)

2、新建一个DC(假定MaskDC),并建立一个单色的位图对象(假定MyBitmap),将MyBitmap选入MaskDC,然后将MemDC中的内容BitBlt到MaskDC中,此时MaskDC中就有一个白底黑字的图像,相当于是Mask. 表示将来要把MemDC中黑色的部分保留下来,其它部分不要,相当与其它部分透明。
(第二步的步骤其实也可愿意直接用白底黑字在MaskDC中写字,写的字和MemDC中相同就好了)

3、设定前景色为白色,背景色黑色,将MemDC和MaskDC进行“与”操作---BitBlt()最后一个参数SRCAND。对字体进行剪切,例如
MemDC.SetBkColor(RGB(0,0,0));
MemDC.SetTextColor(RGB(255,255,255));
MemDC.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &MaskDC, rcclient.left, rcclient.top, SRCAND);
此时就在MemDC中形成了这样一幅图:除了字笔划的部分之外,都成了黑色。

4、将背景DC(将如BkDC)的前景色设为黑色,背景色设为白色,将BkDC和MaskDC做"与"操作,例如
BkDC.SetBkColor(RGB(255,255,255));
BkDC.SetTextColor(RGB(0,0,0));
BkDC.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &MaskDC, rcclient.left, rcclient.top, SRCAND);
此时就在背景上按照字型,挖出了黑色窟窿,这个窟窿的形状就是字的笔划轮廓。

5、将挖好的背景和剪切好的字体做或操作,参数SRCPAINT, 就天衣无缝了!
BkDC.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(), &MemDC, rcclient.left, rcclient.top,SRCPAINT);

--------------------编程问答-------------------- 哇~ 果真行嘛?

收藏先~  --------------------编程问答-------------------- 哇 高手啊 --------------------编程问答-------------------- 当然行了,呵呵
看例子的效果!在背景图上写字!
--------------------编程问答-------------------- 这么强大? --------------------编程问答-------------------- 嗯,方法不错 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 看来不错·~收藏了·~试试先·~~ --------------------编程问答--------------------
补充:移动开发 ,  Windows Phone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,