程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 用漸變色填充背景

用漸變色填充背景

編輯:vc教程

  Windows的圖形界面為我們提供了無窮的方便和視覺上的快感,由淺及深的顏色給我們無盡的遐想。漸變色的實現有多種方法,好多資料上介紹了利用調色板的方法實現,其過程及其的復雜,需要我們具有一定的圖形編程的基礎,下面我將向大家介紹一種比較簡單的方法,即使你一點都不了解圖形編程和調色板的概念。

  第一步:新建單文檔工程,一切參數都取默認值。

  第二步:在shadowvIEw.h中定義變量如下:

private:
int ColorR;
int ColorG;

  第三步:在shadowvIEw.cpp的構造函數中初始化變量如下:

CShadowView::CShadowVIEw()
{
 // TODO: add construction code here
 ColorR = 255;
 ColorG = 255;
}

  第四步:在Ondraw()中添加如下的實現代碼:

void CShadowVIEw::OnDraw(CDC* pDC)
{
 CShadowDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 CRect m_rcClIEnt;
 file://得到客戶區域的填充矩形
 GetClientRect(&m_rcClIEnt);
 int nWidth = m_rcClIEnt.Width();
 int nHeight = m_rcClIEnt.Height();
 CRect rectangle;
 file://分割客戶區域成小矩形,逐個填充
 for(int i = 0;i < nWidth;i++ )
 {
  rectangle.SetRect(i, 0, i+1, nHeight);
  pDC->FillSolidRect(&rectangle, RGB(ColorR, ColorG, 255-MulDiv(i, 255, nWidth)));
  }
}

  現在編譯、運行程序,我們可以發現單文檔界面的背景已經被黃漸變色填充。接下來,我們實現在界面上點擊鼠標左鍵,實現背景顏色的改變。

  第五步:在ClassWizard中添加鼠標左鍵的消息處理映射函數,並添加如下代碼:

void CShadowVIEw::OnLButtonDown(UINT nFlags, CPoint point)
{
 file://生成小於255的隨機數,給ColorR和ColorG賦值
 int nRand = rand();
 float fMap = (float)255/RAND_MAX;
 ColorR = (UINT)(float)nRand*fMap + 0.5f;
 nRand = rand();
 fMap = (float)255/RAND_MAX;
 ColorG = (UINT)(float)nRand*fMap + 0.5f;
 file://更新界面
 Invalidate();
 CVIEw::OnLButtonDown(nFlags, point);
}

  好了,所有的功能都實現了,在界面上點擊鼠標左鍵,我們可以發現,背景以不同的漸變色填充。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved