关于透明背景下字体显示的问题? 在使用GDI+的过程中,为了使字体显示在透明的窗口中使用了SetLayeredWindowAttributes(将窗口的背景设为白色,然后针对白色进行透明),文字显示在黑色的背景上会在边界部分出现白色的锯齿,在下用全部的饿分数请教各位高手该怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/baickl/archive/2005/12/29/565370.aspx看下这里对字体的无锯齿处理 谢谢,可能是我没讲明白,字体边缘的锯齿主要来源于作为背景的白色,在窗口透明过程中字体边缘的某些白色部分有些被保留下来,没有透明,所以出现锯齿的效果。关于去锯齿的两个函数SetTextRenderingHint(TextRenderingHintAntiAlias);和SetSmoothingMode(SmoothingModeHighQuality);我都有试过,单白色的部分还是有保留。但还是要谢谢你 正好相反,你应该去除反锯齿:SetSmoothingMode(SmoothingModeNone); 我试了SetTextRenderingHint(),不过效果不是很明显 BLENDFUNCTION m_Blend; m_Blend.BlendOp=0; m_Blend.BlendFlags=0; m_Blend.AlphaFormat=1; m_Blend.SourceConstantAlpha=255; if((dwExStyle&0x80000) != 0x80000) { SetWindowLong(hWnd,GWL_EXSTYLE,dwExStyle^0x80000); } UpdateLayeredWindow(hWnd,//屏幕上的窗口句柄 hdcClient,//屏幕上的窗口DC &ptWinPos, &SizeWindow, m_hdcKaraoke,//内存中包含需要显示信息的DC &ptSrc, g_crTransparentColor,//需要被透明的颜色 &m_Blend, ULW_ALPHA); MFC,非模态对话框中[按钮]按下,获取父窗口的RGB,用gerpixel(),请问:HDC dc=::GetDC(??_)怎么取 任务栏快速启动的箭头句柄如何获取 加载动态链接库会影响程序启动时的速度吗 怎样用CRichEditView给大点的文件加颜色 为什么Visual Studio 2003打开项目后,CPU就100%了? 请教如何在Non-MFC DLL中显示对话框 如果在Guest用户下执行管理员权限的代码?CreateProcessAsUser的用法 前年愚人节的故事,我的一次感情经历 只学VC够吗? 请教一段代码!! 改CCombox的高度 关于透明背景下字体显示的问题?
看下这里对字体的无锯齿处理
和SetSmoothingMode(SmoothingModeHighQuality);我都有试过,单白色的部分还是有保留。
但还是要谢谢你
SetSmoothingMode(SmoothingModeNone);
m_Blend.BlendFlags=0;
m_Blend.AlphaFormat=1;
m_Blend.SourceConstantAlpha=255; if((dwExStyle&0x80000) != 0x80000)
{
SetWindowLong(hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
}
UpdateLayeredWindow(hWnd,//屏幕上的窗口句柄
hdcClient,//屏幕上的窗口DC
&ptWinPos,
&SizeWindow,
m_hdcKaraoke,//内存中包含需要显示信息的DC
&ptSrc,
g_crTransparentColor,//需要被透明的颜色
&m_Blend,
ULW_ALPHA);