背景色设置透明的问题

hyuga1232007 2009-09-28 07:16:01
我设置背景色和前景色(前景色是文本)以后,又设置背景色透明,结果是背景色和前景色设置正确,但是前景文本背后有个小方框的颜色是背景色的初始默认颜色而不是新改的背景色~~~我是做的activex控件~~,代码,图片如下
void CClock2Ctrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
// TODO: Replace the following code with your own drawing code.
// pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
// pdc->Ellipse(rcBounds);
CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
//pdc->SetBkColor(TRANSPARENT);
pdc->SetTextColor(TranslateColor(GetForeColor()));
CTime time=CTime::GetCurrentTime();
if(0==time.GetSecond())
{
FireNewMinute();
}
CString str=time.Format("%H:%M:%S");
pdc->TextOut(0,0,str);
}
...全文
374 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chqiang0_0 2009-09-29
  • 打赏
  • 举报
回复
上面的打错了。。是SetBkColor
chqiang0_0 2009-09-29
  • 打赏
  • 举报
回复
可以先创建一个基于CButton的类。。以为要是修改按钮控件要用到虚函数DrawItem。 然后在改类中加入虚函数DrawItem。 再把你要改变按钮的ID绑定到改类。。 然后在按钮的属性中--->样式--->选择owner draw 。。 具体你要的按钮透明可以再DrawItem中设置。 设计部分可以看MSDN中DRAWITEMSTRUCT的结构体介绍。



要是是文本背景透明可以用 SetBkMode 或是SetbKColor
chqiang0_0 2009-09-29
  • 打赏
  • 举报
回复
同9L的 MSDN中SetBkcolor()的参数是COLORREF
Allen_zhang 2009-09-29
  • 打赏
  • 举报
回复

CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
//pdc->SetBkColor(TRANSPARENT); // TRANSPARENT不是颜色来的,#define TRANSPARENT 1
// 这样会变成RGB为1的颜色了

// 改为pdc->SetBkMode(TRANSPARENT); 这样才是透明的
// 或者改为pdc->SetBkColor(TranslateColor(GetBackColor())); 将文字背景改为你的刷子的颜色也可以



setbkmode和setbkcolcor在具体使用时的差别是什么,很明显看名称都不一样吧

The SetBkMode function sets the background mix mode of the specified device context. The background mix mode is used with text, hatched brushes, and pen styles that are not solid lines.

The SetBkColor function sets the current background color to the specified color value, or to the nearest physical color if the device cannot represent the specified color value.
  • 打赏
  • 举报
回复
看不到图.....
SetBKMode!
不会像用 pdc->SetBkColor(TRANSPARENT);这个设置背景颜色啊,能直接把TRANSPARENT当参数?当然编译是没错的.....
用RGB()宏!
hyuga1232007 2009-09-29
  • 打赏
  • 举报
回复
setbkmode和setbkcolcor在具体使用时的差别是什么,我把那个pdc->SetBkColor(TRANSPARENT);
改为pdc->SetBkMode(TRANSPARENT);就没问题了,文字的小方框背景色就成了background的颜色了。不会像用 pdc->SetBkColor(TRANSPARENT); 时文字的小方框背景色是黑的了
hyuga1232007 2009-09-28
  • 打赏
  • 举报
回复
有没有大侠帮帮忙啊
hyuga1232007 2009-09-28
  • 打赏
  • 举报
回复
谁能帮我一下哈~~~谢谢各位大虾了
hyuga1232007 2009-09-28
  • 打赏
  • 举报
回复
大伙帮个忙
qianhe_he 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luckzengwei 的回复:]
只做过button按钮的变色问题
帮顶~
[/Quote]
你怎做的按钮变透明的??教教我
luckzengwei 2009-09-28
  • 打赏
  • 举报
回复
只做过button按钮的变色问题
帮顶~

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧