标题:DrawText的输出问题
取消只看楼主
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
结帖率:66.67%
已结贴  问题点数:20 回复次数:4 
DrawText的输出问题
我在窗体中尝试用DrawText输出,一开始可以,但是使用SetTextColor(g_hdc,crTransparent)时也没有发生什么改变,输出还是一样。用了SetBkMode(g_hdc,TRANSPARENT)之后Drawtext就无法输出了。
程序代码:
void Out(int nXOriginDest,int nYOriginDest,HFONT hf,COLORREF crTransparent,const char* wanna_char)
{
    RECT rect;

    SetRect(&rect,nXOriginDest,nYOriginDest,1200,720);

    COLORREF Last_Color = SetTextColor(g_hdc,crTransparent);//这句用不用没有区别
    int Last_Mode = SetBkMode(g_hdc,TRANSPARENT);//这句用完就没有输出

    SelectObject(g_hdc,hf);//字体
    DrawText(g_hdc,wanna_char,-1,&rect,DT_LEFT | DT_WORDBREAK | DT_EXPANDTABS);

    SetBkMode(g_hdc,Last_Mode);
    SetTextColor(g_hdc,Last_Color);

    return;
}

另外,我用的是多字节字符集,之前看大佬在Dev上好好的,搬运到VS2017后就不行了
搜索更多相关主题的帖子: 输出 int 字体 return 字节 
2018-08-30 16:04
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
得分:0 
我也不清楚,但是出来的效果就是这个样子

注释掉int Last_Mode = SetBkMode(g_hdc,TRANSPARENT);之后出来的是这样

但是我调用的时候
Out(10,10,hfont,RGB(256,0,256),"你好世界!\nHello world!");
有调整了字色,可还是黑的
2018-08-30 17:41
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
得分:0 
或者可能是因为颜色的COLORREF Last_Color = SetTextColor(g_hdc,crTransparent);没有起作用,所以透明之后和背景同色看不出来?
2018-08-30 17:43
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
得分:0 
另外原设置蓝色的背景输出文字后就黑了,也没用调用什么
2018-08-30 17:46
李昊逸Lion
Rank: 2
来 自:福州
等 级:论坛游民
威 望:2
帖 子:79
专家分:75
注 册:2017-8-1
得分:0 
谢谢大佬,可以了
2018-08-31 09:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489530-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.616918 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved