用渐变色填充背景

原创 2004年10月28日 11:20:00
 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);
}

  好了,所有的功能都实现了,在界面上点击鼠标左键,我们可以发现,背景以不同的渐变色填充
hitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gifhitwall.gif

OpenGL像素填充渐变色

原理:一列一列的画点,每画一列,改变一下颜色,然后画下一列,主要用到下面两个函数: void glColor3f(GLfloatred, GLfloatgreen,GLfloat blue) 设置...
  • qp120291570
  • qp120291570
  • 2012年10月21日 18:13
  • 7093

IOS 绘制背景色渐变的矩形

两段代码,首先是使用方法 01 CGContextRef context = UIGraphicsGetCurrentContext(); ...
  • majiakun1
  • majiakun1
  • 2014年01月04日 20:14
  • 6186

QT 渐变填充

QT 一. 使用QTimeEvent类 QT QT
  • lwbeyond
  • lwbeyond
  • 2014年11月25日 12:55
  • 3774

shape文件用法一:在Android中,用XML文件来设置颜色的渐变

需求:要完成
  • watermusicyes
  • watermusicyes
  • 2014年04月30日 14:50
  • 9424

C#窗体背景渐变色

触发重新绘制事件的实现代码如下: private void button2_Click(object sender, EventArgs e) { this.Hide( ); ...
  • haoduo123456789001
  • haoduo123456789001
  • 2016年05月12日 09:12
  • 1441

MFC 对话框实现 背景色渐变

mfc实现某对话框背景色渐变 如果是单文档视图结构,在OnDraw实现代码,如果是对话框结构,在该对话框所在的cpp里的OnPain函数【如果没有这个函数,请在类向导里派生】里实现如下代码即可,本示例...
  • dhl11
  • dhl11
  • 2017年03月02日 14:46
  • 592

一个用渐变色填充矩形的函数

以下代码主要来源于CodeProject上一个用渐变色填充DC的static控件中的一部分代码。这是要使用的函数原型:typedef UINT (CALLBACK* LPGNDLLFUNC)(HDC,...
  • galaxywar
  • galaxywar
  • 2005年03月27日 13:15
  • 1149

swift 自定义画渐变色折线图

====================================================================================================...
  • fwjzm
  • fwjzm
  • 2016年03月29日 13:50
  • 1378

Android UI设计小知识——渐变色背景的制作

渐变色的制作  前几天突然发现QQ默认的聊天背景是渐变色的,然后学恶习了一下背景颜色渐变的制作,在此总结一下。    1. 分别取上中下的是那种颜色。我们这里使用 黑色”#000000“, 灰色”...
  • To_be_Designer
  • To_be_Designer
  • 2015年09月01日 20:11
  • 7737

Android 给AChartEngine绘制的曲线图加渐变色(修改AChartEngine源码)

AChartEngine是一个安卓的图标框架,支持各种图标。以下说的针对曲线图。 百度一通没发现,然后在http://stackoverflow.com/questions/16140546/andr...
  • u010237531
  • u010237531
  • 2015年09月16日 17:31
  • 2642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用渐变色填充背景
举报原因:
原因补充:

(最多只允许输入30个字)