如何在VC中改变控件的背景色

如何在VC中改变控件的背景色,第1张

在VC编程中要改变控件(诸如CView CFrameWnd or CWnd等)的背景色可通过处理特定的消息来实现 但如果想改变按钮的颜色 就只能使用自绘制的按钮(也可以用位图按钮 此处未做说明)而不能通过OnCtlColor()改变   一 在一个MFC应用程序中 要改变控件的背景色可通过重载OnCtlColor()函数来实现 方法是在该函数中设置所需颜色后再返回一个画刷句柄便可重绘控件背景色 OnCtlColor()函数对于控件背景色的处理是通过捕捉相应的控件消息来实现的 常用的此类消息有 CTLCOLOR_DLG 对话框 CTLCOLOR_EDIT 编辑框 CTLCOLOR_LISTBOX 列表框 CTLCOLOR_MSGBOX 消息框 CTLCOLOR_SCROLLBAR 滑动条 CTLCOLOR_STATIC 静态文本框 矩形等 以下示例代码说明如何更改以上控件的背景色

//CmyDialog h定义 class CMyDialog : public Cdialog //派生自己的对话框类 { …… // Implementation protected: // Generated message map functions //{{AFX_MSG(CMyDialog) afx_msg HBRUSH OnCtlColor(CDC* pDC CWnd* pWnd UINT nCtlColor)…… //}}AFX_MSG DECLARE_MESSAGE_MAP() }//CmyDialog cpp 定义 …… HBRUSH CMyDialog::OnCtlColor(CDC* pDC CWnd* pWnd UINT nCtlColor) { switch (nCtlColor) { case CTLCOLOR_EDIT: case CTLCOLOR_MSGBOX: case CTLCOLOR_DLG : case CTLCOLOR_EDIT : //在此加入你想要改变背景色的控件消息 pDC >SetBkMode(TRANSPARENT)HBRUSH B = CreateSolidBrush(COLOR)//COLOR是你想设置的颜色 return (HBRUSH) Bdefault: //其他控件设置自己默认的颜色和背景刷 return CDialog::OnCtlColor(pDC pWnd nCtlColor)}}

说明 可分别处理以上消息以实现不同控件不同背景色 此方法不适用于按纽控件 二 通过定制来实现不同颜色按纽 以下通过定制方形彩色按纽来说明 第一步 派生出自己的按纽类

 //CcolorButton h class CColorButton : public CButton { DECLARE_DYNAMIC(CColorButton) public: CColorButton()virtual ~CColorButton()BOOL Attach(const UINT nID CWnd* pParent const COLORREF BGColor = RGB( ) // 按纽的背景色 const COLORREF FGColor = RGB( ) // 文本颜色 )protected: virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS)//重定义虚拟函数DrawItem void DrawFrame(CDC *DC CRect R)//绘制按纽框 void DrawFilledRect(CDC *DC CRect R COLORREF color)//填充按纽框 void DrawLine(CDC *DC CRect EndPoints COLORREF color)void DrawLine(CDC *DC long left long top long right long bottom COLORREF color)void DrawButtonText(CDC *DC CRect R const char *Buf COLORREF TextColor)//绘制按纽上的文本 COLORREF GetFGColor() { return m_fg} COLORREF GetBGColor() { return m_bg} private: COLORREF m_fg m_bg}#endif

第二步 定义各函数

 //CcolorButton cpp …… // CColorButton IMPLEMENT_DYNAMIC(CColorButton CButton) CColorButton::CColorButton() { } CColorButton::~CColorButton() { } //定义Attach()函数 BOOL CColorButton::Attach(const UINT nID CWnd* pParent const COLORREF BGColor const COLORREF FGColor) { if (!SubclassDlgItem(nID pParent)) return FALSEm_fg = FGColorm_bg = BGColorreturn TRUE} //重载DrawItem() void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDIS) { CDC* pDC = CDC::FromHandle(lpDIS >hDC)UINT state = lpDIS >itemStateCRect focusRect btnRectfocusRect CopyRect(&lpDIS >rcItem)//按纽的选中虚线框 btnRect CopyRect(&lpDIS >rcItem)// 设置表示按纽被选中的虚线框 focusRect left += focusRect right = focusRect top += focusRect bottom = // 按纽标题 const int bufSize = TCHAR buffer[bufSize]GetWindowText(buffer bufSize)// 绘制并标志按纽 DrawFilledRect(pDC btnRect GetBGColor())DrawFrame(pDC btnRect)DrawButtonText(pDC btnRect buffer GetFGColor())// 如果按纽处于选中状态则在其上绘制选中虚线框 if (state &ODS_FOCUS) { DrawFocusRect(lpDIS >hDC (LPRECT)&focusRect)} } void CColorButton::DrawFrame(CDC *DC CRect R) { //绘制按纽 用户通过定制该函数可实现不同形状的按纽 DrawLine(DC R left R top R right R top RGB( ))DrawLine(DC R left R top R left R bottom RGB( ))//以下绘制按纽的外围框线以使按纽有立体感 DrawLine(DC R left + R bottom R right R bottom RGB( ))//绘制按纽左框线和上框线 DrawLine(DC R right R top + R right R bottom RGB( ))//绘制按纽右框线和下框线 } //用色彩填充按纽框 void CColorButton::DrawFilledRect(CDC *DC CRect R COLORREF color) { CBrush BB CreateSolidBrush(color)DC >FillRect(R &B)} // DrawLine用于绘制按纽 其为多态函数 void CColorButton::DrawLine(CDC *DC CRect EndPoints COLORREF color) { …… } void CColorButton::DrawLine(CDC *DC long left long top long right long bottom COLORREF color) { …… } //绘制按纽文本 void CColorButton::DrawButtonText(CDC *DC CRect R const char *Buf COLORREF TextColor) { COLORREF prevColor = DC >SetTextColor(TextColor)DC >SetBkMode(TRANSPARENT)DC >DrawText(Buf strlen(Buf) R DT_CENTER|DT_VCENTER|DT_SINGLELINE)DC >SetTextColor(prevColor)}

第三步 引用定制类 定制任意对话框CColorDlg 在其上画一按键控件 ID为IDOK

lishixinzhi/Article/program/net/201311/11539

在C# WPF中,可以通过以下代码更改Label控件的文本颜色:

label.Foreground = Brushes.Red// 将文本颜色更改为红色

其中,Foreground是Label控件的前景色,可以用Brushes类里面的任何颜色来设置文本的颜色。例如,Brushes.Red表示红色。

方法/步骤

 如下图,为一文本框控件和按钮控件!

要想修改控件,其实很简单的,如下图,首先选择一种控件,之后在其内部点击右键,在d出来的快捷菜单中选择“属性”;

d出如下图的对话框!

4

下面将上图的常用的部分属性介绍一下!

①BackColor:控件的背景颜色;

②BackStyle:控件的背景样式;

③Caption:控件上面所显示的文字;

④ForeColor:控件文字的颜色;

⑤Picture:控件上面显示的图片;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11080013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存