我以前做的方法是先用背景颜色刷子填充一次,然后在用CBrush( int nIndex, COLORREF crColor )填充一次,可是总是把背景覆盖了,试了几种别的方法也不行。
这个只能使用VC自带的方法,不能借助其他的开发包。
11 个解决方案
#1
CreateSolidBrush()刷下就可以了
#2
SetBkColor
#3
或者pDC->SetBkMode(TRANSPARENT);
#4
老大你梦游了..?
SetBkColor()是设置文本的背景颜色的吧
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));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色
这个是我的代码:
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));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色
这个是我的代码:
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不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色
SetBkColor不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色
#10
后画的总是把先画的刷掉了!!
#11
goodboyws,chehw 是对的,SetBkColor确实可以
谢谢大家了,呵呵
谢谢大家了,呵呵
#1
CreateSolidBrush()刷下就可以了
#2
SetBkColor
#3
或者pDC->SetBkMode(TRANSPARENT);
#4
老大你梦游了..?
SetBkColor()是设置文本的背景颜色的吧
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));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色
这个是我的代码:
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));
总是相互覆盖,大家看看怎么改进下啊,能够设置背景颜色
这个是我的代码:
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不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色
SetBkColor不单只是设置文本背景色,对于填充图案的画刷, 也可用于设置填充时的背景色
#10
后画的总是把先画的刷掉了!!
#11
goodboyws,chehw 是对的,SetBkColor确实可以
谢谢大家了,呵呵
谢谢大家了,呵呵