hur.cn - 华软网

 热门搜索

如何写一行不同颜色的字

  作者:未知    来源:网络    更新时间:2011/8/26
a bcd@

我的思路:

C++">
CDC* pDC= m_RecvEdit.GetDC();

TEXTMETRIC tMetric;
pDC->GetTextMetrics(&tMetric);

pDC->TextOut(0,0,ss);
for(int i = 0; i < t.GetLength();i++)//t是字符串
{
    //设置前景色
    //设置背景色
    //代码
    pDC->TextOut(i*tMetric.tmMaxCharWidth,0,t[i]);
}
ReleaseDC(pDC);

我的想法就是逐个字符输出 设置每个字符的前景色和背景色

可是问题是输出的样子非常难看
请问是不是不同字符的宽度不一样啊
比如空格 和英文字符 和汉字
如何识别每个字符的宽度呢?

我用tmMaxCharWidth设置输出的位置,字符间总有空白

请问该怎么做?
---华软 网友回答---
请问是不是不同字符的宽度不一样啊
-----------------------------
是的
建议背景透明。如果你要自己定义背景,在内存dc画好,textout仍然背景透明地画上去,再bitblt到pDC
---华软网友回复---
gdi+ 好像有个渐变色

求宽度也有
MeasureString
---华软网友回复---
C++">
GetTextExtent()

取得字符大小
---华软网友回复---
看看分数
---华软网友回复---
不同类型的Font,画出来的字体大小当然不一样

你可以用通一个Font去画,只要设置字体的颜色就可以了

没必要不同的字就用不同的字体去画
---华软网友回复---
GetTextMetrics
GetTextExtent
DrawText
---华软网友回复---
都很厉害啊 

比如输出 
char str[10]="ab的c";
其中
str[0]=97
str[1]=98
str[2]=-75
str[3]=-60
str[4]=99
str[5]=0
......
如果逐个输出 汉字就变成乱码了
怎么能正确的输出呢
---华软网友回复---
转换成unicode      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。