CBrush( int nIndex, COLORREF crColor )填充设置背景色的问题

时间:2022-11-23 23:27:24
CBrush( int nIndex, COLORREF crColor )填充图形时“COLORREF crColor ”只能设置填充图案的线条颜色,不能设置背景颜色,我想自己设置背景颜色。不知道大家有没有什么好的办法。
我以前做的方法是先用背景颜色刷子填充一次,然后在用CBrush( int nIndex, COLORREF crColor )填充一次,可是总是把背景覆盖了,试了几种别的方法也不行。
这个只能使用VC自带的方法,不能借助其他的开发包。

11 个解决方案

#1


CreateSolidBrush()刷下就可以了

#2


SetBkColor

#3


或者pDC->SetBkMode(TRANSPARENT);

#4


老大你梦游了..?

SetBkColor()是设置文本的背景颜色的吧 

#5


CreateSolidBrush()再刷下也不行,还是被覆盖
这个是我的代码:
CPaintDC dc(this);

//设置矩形区域
CRect rect;
GetDlgItem(IDC_AREA_SWATCH)->GetWindowRect(&rect);
ScreenToClient(&rect);

//创建画矩形区域边线的画笔
LOGBRUSH   brush;
brush.lbColor=SidelineColor;   
brush.lbStyle=BS_SOLID;
CPen pen;  
pen.CreatePen(SidelineType|PS_GEOMETRIC|PS_ENDCAP_SQUARE,SidelineWidth,&brush,0,NULL);
dc.SelectObject(&pen);

//创建画刷
CBrush brush1(1,ForegroundColor);       //前景画刷
dc.SelectObject(brush1);

CBrush brush2(BackgroundColor);         //背景画刷
//画矩形
dc.Rectangle(CRect(rect.left, rect.top, rect.right, rect.bottom));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色

#6


CreateSolidBrush()再刷下也不行,还是被覆盖 
这个是我的代码: 
CPaintDC   dc(this); 

//设置矩形区域 
CRect rect; 
GetDlgItem(IDC_AREA_SWATCH)-> GetWindowRect(&rect); 
ScreenToClient(&rect); 

//创建画矩形区域边线的画笔 

CPen pen;     
pen.CreatePen(SidelineType ¦PS_GEOMETRIC ¦PS_ENDCAP_SQUARE,SidelineWidth,&brush,0,NULL); 
dc.SelectObject(&pen); 


//创建画刷 
CBrush brush1;
CBrush brush1(1,ForegroundColor);               //前景画刷 
dc.SelectObject(brush1); 
dc.SetBkColor(BackgroundColor);

//画矩形 
dc.Rectangle(CRect(rect.left,   rect.top,   rect.right,   rect.bottom)); 
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色 

#7


没明白  谁覆盖谁了?

#8


你是说矩形边框被覆盖了??
画两次 不就成了

#9


::SetBkColor

SetBkColor不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色

#10


后画的总是把先画的刷掉了!!

#11


goodboyws,chehw 是对的,SetBkColor确实可以
谢谢大家了,呵呵

#1


CreateSolidBrush()刷下就可以了

#2


SetBkColor

#3


或者pDC->SetBkMode(TRANSPARENT);

#4


老大你梦游了..?

SetBkColor()是设置文本的背景颜色的吧 

#5


CreateSolidBrush()再刷下也不行,还是被覆盖
这个是我的代码:
CPaintDC dc(this);

//设置矩形区域
CRect rect;
GetDlgItem(IDC_AREA_SWATCH)->GetWindowRect(&rect);
ScreenToClient(&rect);

//创建画矩形区域边线的画笔
LOGBRUSH   brush;
brush.lbColor=SidelineColor;   
brush.lbStyle=BS_SOLID;
CPen pen;  
pen.CreatePen(SidelineType|PS_GEOMETRIC|PS_ENDCAP_SQUARE,SidelineWidth,&brush,0,NULL);
dc.SelectObject(&pen);

//创建画刷
CBrush brush1(1,ForegroundColor);       //前景画刷
dc.SelectObject(brush1);

CBrush brush2(BackgroundColor);         //背景画刷
//画矩形
dc.Rectangle(CRect(rect.left, rect.top, rect.right, rect.bottom));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色

#6


CreateSolidBrush()再刷下也不行,还是被覆盖 
这个是我的代码: 
CPaintDC   dc(this); 

//设置矩形区域 
CRect rect; 
GetDlgItem(IDC_AREA_SWATCH)-> GetWindowRect(&rect); 
ScreenToClient(&rect); 

//创建画矩形区域边线的画笔 

CPen pen;     
pen.CreatePen(SidelineType ¦PS_GEOMETRIC ¦PS_ENDCAP_SQUARE,SidelineWidth,&brush,0,NULL); 
dc.SelectObject(&pen); 


//创建画刷 
CBrush brush1;
CBrush brush1(1,ForegroundColor);               //前景画刷 
dc.SelectObject(brush1); 
dc.SetBkColor(BackgroundColor);

//画矩形 
dc.Rectangle(CRect(rect.left,   rect.top,   rect.right,   rect.bottom)); 
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色 

#7


没明白  谁覆盖谁了?

#8


你是说矩形边框被覆盖了??
画两次 不就成了

#9


::SetBkColor

SetBkColor不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色

#10


后画的总是把先画的刷掉了!!

#11


goodboyws,chehw 是对的,SetBkColor确实可以
谢谢大家了,呵呵