• 大小: 58.08MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-01-24
  • 语言: C/C++
  • 标签: MFC  按钮自绘  垂直  

资源简介

在MFC的基础上将按钮控件分别以垂直、水平和倾斜三种形式绘制了一个6个按钮控件图,但是在绘图上还是有很大的差距的

资源截图

代码片段和文件信息

// ButtonDot.cpp : 实现文件
//

#include “stdafx.h“
#include “example.h“
#include “ButtonDot.h“


// CButtonDot

IMPLEMENT_DYNAMIC(CButtonDot CButton)

CButtonDot::CButtonDot()
{
m_Pen1.CreatePen(PS_SOLID 1 RGB(201 201 233));
m_normalBrush1.CreateSolidBrush(RGB(231 221 223));//正常状态下的按钮颜色  
m_activeBrush1.CreateSolidBrush(RGB(201 201 233));//按钮按下时的按钮颜色  
}

CButtonDot::~CButtonDot()
{
m_Pen1.Deleteobject();
m_normalBrush1.Deleteobject();
m_activeBrush1.Deleteobject();
}


BEGIN_MESSAGE_MAP(CButtonDot CButton)
END_MESSAGE_MAP()



// CButtonDot 消息处理程序




void CButtonDot::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{

// TODO:  添加您的代码以绘制指定项
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
int nSaveDC = pDC->SaveDC();//存储当前设备环境,以便绘图结束时恢复原来状态  
pDC->Selectobject(&m_normalBrush1);//选择按钮正常状态(默认状态)下的画刷  
pDC->Selectobject(&m_Pen1);//选择画笔  
CRect rct = lpDrawItemStruct->rcItem;//获取按钮矩形区域  
if (lpDrawItemStruct->itemState&ODS_SELECTED)//绘制按钮按下时的颜色  
{
pDC->Selectobject(&m_activeBrush1);
}
pDC->Ellipse(&rct);//画椭圆按钮,这一步用了之前选择的画笔和画刷  

   //重绘字体  
pDC->SetBkMode(TRANSPARENT);//重绘文本时不擦除背景即透明模式,如果选择OPAQUE(不透明),在文本四周有白色矩形边框,十分之难看  
CString strText{};//c++11版本以下不支持此方法  
GetWindowText(strText);//获取按钮文本  
pDC->DrawText(strText rct DT_CENTER | DT_VCENTER | DT_SINGLELINE);//重绘按钮文本  

//恢复设备环境  
pDC->RestoreDC(nSaveDC);
}


void CButtonDot::PreSubclassWindow()
{
// TODO: 在此添加专用代码和/或调用基类
Modifystyle(0 BS_OWNERDRAW);//改为自绘风格  

 // 绘制按钮可用区域,切掉四个边角  
CRgn rgn;
CRect rct;
GetClientRect(&rct);
rgn.CreateEllipticRgnIndirect(&rct);//在按钮矩形内创建椭圆区域  
::SetWindowRgn(GetSafeHwnd() (HRGN)rgn true);//将椭圆区域应用到按钮上  
CButton::PreSubclassWindow();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     40448  2017-08-10 19:44  example\.vs\example\v14\.suo

     文件     230400  2017-08-10 19:29  example\Debug\example.exe

     文件    1529196  2017-08-10 19:29  example\Debug\example.ilk

     文件    8032256  2017-08-10 19:29  example\Debug\example.pdb

     文件       2057  2017-08-10 17:33  example\example\ButtonDot.cpp

     文件        385  2017-08-10 17:28  example\example\ButtonDot.h

     文件      39529  2017-08-10 17:34  example\example\Debug\ButtonDot.obj

     文件        140  2017-08-10 19:29  example\example\Debug\example.log

     文件      69887  2017-08-10 17:29  example\example\Debug\example.obj

     文件   55246848  2017-08-09 16:18  example\example\Debug\example.pch

     文件      74068  2017-08-10 19:29  example\example\Debug\example.res

     文件       4858  2017-08-10 19:27  example\example\Debug\example.tlog\CL.command.1.tlog

     文件      83532  2017-08-10 19:27  example\example\Debug\example.tlog\CL.read.1.tlog

     文件       6102  2017-08-10 19:27  example\example\Debug\example.tlog\CL.write.1.tlog

     文件        189  2017-08-10 19:29  example\example\Debug\example.tlog\example.lastbuildstate

     文件       1762  2017-08-10 19:29  example\example\Debug\example.tlog\link.command.1.tlog

     文件       6238  2017-08-10 19:29  example\example\Debug\example.tlog\link.read.1.tlog

     文件        868  2017-08-10 19:29  example\example\Debug\example.tlog\link.write.1.tlog

     文件        354  2017-08-10 19:29  example\example\Debug\example.tlog\rc.command.1.tlog

     文件       3128  2017-08-10 19:29  example\example\Debug\example.tlog\rc.read.1.tlog

     文件        174  2017-08-10 19:29  example\example\Debug\example.tlog\rc.write.1.tlog

     文件      59930  2017-08-10 17:29  example\example\Debug\exampleDlg.obj

     文件      24205  2017-08-10 17:24  example\example\Debug\Month.obj

     文件     922079  2017-08-09 16:18  example\example\Debug\stdafx.obj

     文件      42688  2017-08-10 19:27  example\example\Debug\TestBtn.obj

     文件      44510  2017-08-10 14:57  example\example\Debug\testbtn.obj.enc

     文件      38842  2017-08-10 17:24  example\example\Debug\TestBtn1.obj

     文件    2444288  2017-08-10 19:27  example\example\Debug\vc140.idb

     文件    6885376  2017-08-10 19:27  example\example\Debug\vc140.pdb

     文件     113624  2017-08-10 19:44  example\example\example.aps

............此处省略38个文件信息

评论

共有 条评论