Button显示颜色

.h文件

// ecolorbtn.h : ヘッダー ファイル
//
#ifndef _ECOLOR_BUTTON_
#define _ECOLOR_BUTTON_

class EColorBtn : public CButton
{
// コンストラクション
public:
  EColorBtn( );
  ~EColorBtn( );
// アトリビュート
public:
  void SetColor(COLORREF rgbColor,BOOL bActive);
  void ESetDrawPal( CPalette *pPal );
  COLORREF GetColor();
protected:
  COLORREF m_rgbColor;
  COLORREF m_rgbActive;
  BOOL m_bActive;
 
  CPalette *m_pDrawPal;

// オペレーション
public:

// オーバーライド
 // ClassWizard は仮想関数を生成しオーバーライドします。
 //{{AFX_VIRTUAL(EColorBtn)
 public:
 virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
 virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
 //}}AFX_VIRTUAL

// インプリメンテーション
public:

 // 生成されたメッセージ マップ関数
protected:
 //{{AFX_MSG(EColorBtn)
 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()
public:
};

#endif

.cpp文件

// ecolorbtn.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "ecolorbtn.h"
#include "./ecolorbtn.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/
// EColorBtn

EColorBtn::EColorBtn()
{
  m_pDrawPal = NULL;
}

EColorBtn::~EColorBtn()
{
}


BEGIN_MESSAGE_MAP(EColorBtn, CButton)
 //{{AFX_MSG_MAP(EColorBtn)
 //}}AFX_MSG_MAP
// ON_WM_DRAWITEM()
END_MESSAGE_MAP()

/
// EColorBtn メッセージ ハンドラ

void EColorBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
  CDC *cdc = GetDC();
  BYTE byR, byG, byB;
  CPalette *pOldPal = NULL;

  if ( m_pDrawPal != NULL ){
    pOldPal = cdc->SelectPalette( m_pDrawPal, FALSE );
    cdc->RealizePalette( );
  }
 
  byR = GetRValue( m_rgbColor );
  byG = GetGValue( m_rgbColor );
  byB = GetBValue( m_rgbColor );


  CBrush brush( PALETTERGB( byR, byG, byB ) );
  CRect rect;
 
  GetClientRect(&rect);
 
  cdc->FillRect( &rect, &brush );
 
  if(m_bActive == TRUE){    //Active
    CBrush Framebrush(PALETTERGB(255-GetRValue(m_rgbColor),255-GetGValue(m_rgbColor),
     255-GetBValue(m_rgbColor)));
    cdc->FrameRect( &rect, &Framebrush );
  }
 
  if ( pOldPal != NULL ){
    cdc->SelectPalette( pOldPal, FALSE );
  }

  ReleaseDC(cdc);
}

void EColorBtn::SetColor(COLORREF rgbColor,BOOL bActive)
{
 m_rgbColor = rgbColor;
 m_bActive = bActive;
 Invalidate();
}

COLORREF EColorBtn::GetColor()
{
 return m_rgbColor;
}


BOOL EColorBtn::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
 m_rgbColor = RGB(0,255,0);
 m_rgbActive = RGB(0,0,255);
 m_bActive = FALSE;

 return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}


void EColorBtn::ESetDrawPal( CPalette *pPal )
{
  m_pDrawPal = pPal;
}

应用例子:

 CColorDialog _colDlg;
 INT_PTR  _response = _colDlg.DoModal();
 if(_response == IDOK)
 {
  _color = _colDlg.GetColor();
  _colorBtn.SetColor(_color, TRUE);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们提到button的背景颜色透明时,通常是指在界面上显示一个透明的按钮,即按钮的背景色为透明,使得按钮看起来没有实际的背景色。这样可以使按钮与背景图片或者其他元素融合在一起,给用户一种更加自然和无缝的视觉效果。 要实现button的背景颜色透明,可以通过以下几种方式来实现: 1. 使用CSS样式:可以通过设置按钮的背景色为透明来实现。在CSS中,可以使用rgba()函数来设置颜色的透明度。例如,设置按钮的背景色为透明可以使用以下代码: ```css button { background-color: rgba(0, 0, 0, 0); } ``` 这里的rgba()函数中的最后一个参数0表示完全透明,可以根据需要调整透明度。 2. 使用图片作为按钮背景:可以使用一张透明的图片作为按钮的背景图,这样按钮就会显示为透明。可以通过CSS样式来设置按钮的背景图片。例如: ```css button { background-image: url("transparent.png"); background-repeat: no-repeat; background-size: cover; } ``` 这里的transparent.png是一张透明的图片,通过设置background-image属性来指定该图片作为按钮的背景图。 3. 使用透明度属性:一些UI框架或库提供了直接设置按钮透明度的属性。例如,在Android开发中,可以使用`android:background`属性来设置按钮的背景色,并通过设置透明度属性`android:alpha`来实现按钮的背景颜色透明。 希望以上解答对您有帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值