3、LinearGradientBrush(Rect&,Color&,Color&,LinearGradientMode)
对四种路径渐变方式进行代码效果展示,如下:
变量定义:
CDC MemDCIndicator; CBitmap MemBitmapIndicator; CDC *pDC; CComboBox m_pGradientMode;
关键代码:
1 void LinearGradientTwoDlg::DoDataExchange(CDataExchange* pDX) 2 { 3 CDialogEx::DoDataExchange(pDX); 4 DDX_Control(pDX, IDC_COMBO1, m_pGradientMode); 5 } 6 7 BEGIN_MESSAGE_MAP(LinearGradientTwoDlg, CDialogEx) 8 ON_WM_PAINT() 9 ON_CBN_SELCHANGE(IDC_COMBO1, &LinearGradientTwoDlg::OnCbnSelchangeCombo1) 10 END_MESSAGE_MAP() 11 12 void LinearGradientTwoDlg::OnPaint() 13 { 14 CPaintDC dc(this); 15 DrawFunction(); 16 } 17 18 BOOL LinearGradientTwoDlg::OnInitDialog() 19 { 20 CDialogEx::OnInitDialog(); 21 m_pGradientMode.InsertString(0,L"LinearGradientModeHorizontal"); 22 m_pGradientMode.InsertString(1, L"LinearGradientModeVertical"); 23 m_pGradientMode.InsertString(2, L"LinearGradientModeForwardDiagonal"); 24 m_pGradientMode.InsertString(3, L"LinearGradientModeBackwardDiagonal"); 25 m_pGradientMode.SetCurSel(0); 26 m_pLinearGradientMode = LinearGradientModeHorizontal; 27 return TRUE; 28 } 29 30 31 void LinearGradientTwoDlg::DrawFunction() 32 { 33 CRect rt; 34 GetClientRect(&rt); 35 pDC = GetDC(); 36 MemDCIndicator.CreateCompatibleDC(pDC); 37 MemBitmapIndicator.CreateCompatibleBitmap(pDC, rt.Width(), rt.Height() * 2/ 3); 38 MemDCIndicator.SelectObject(&MemBitmapIndicator); 39 MemDCIndicator.FillSolidRect(rt, RGB(100, 100, 100)); 40 41 Graphics graphics(MemDCIndicator); 42 graphics.SetSmoothingMode(SmoothingModeHighQuality); 43 LinearGradientBrush lbr(Rect(0, 0, rt.Width(), rt.Height() * 2/ 3), Color(255, 0, 0), Color(0, 255, 0), m_pLinearGradientMode); 44 graphics.FillRectangle(&lbr, rt.left, rt.top, rt.Width(), rt.Height() * 2/ 3); 45 pDC->BitBlt(rt.left, rt.top, rt.Width(), rt.Height() * 2/ 3, &MemDCIndicator, 0, 0, SRCCOPY); 46 MemDCIndicator.DeleteDC(); 47 MemBitmapIndicator.DeleteObject(); 48 ReleaseDC(pDC); 49 } 50 void LinearGradientTwoDlg::OnCbnSelchangeCombo1() 51 { 52 switch (m_pGradientMode.GetCurSel()) { 53 case 0: 54 m_pLinearGradientMode = LinearGradientModeHorizontal; 55 break; 56 case 1: 57 m_pLinearGradientMode = LinearGradientModeVertical; 58 break; 59 case 2: 60 m_pLinearGradientMode = LinearGradientModeForwardDiagonal; 61 break; 62 case 3: 63 m_pLinearGradientMode = LinearGradientModeBackwardDiagonal; 64 break; 65 default: 66 break; 67 } 68 Invalidate(); 69 }
标签:rt,画刷,pGradientMode,LinearGradientTwoDlg,MemDCIndicator,LinearGradientBrush,pLin From: https://www.cnblogs.com/missyou0813/p/17573361.html