//颜色值单通道取反
int ReverseValue(int c)
{int cc = 255 - c;if(cc>64 && cc<128)cc-=64;else if(cc>=128 && cc<192)cc+=64;return cc;
}//计算渐变   一次变一通道
COLORREF ResetColor1(int &iType,int &m_R,int &m_G,int &m_B,int dtRGB)
{switch(iType){case 0:m_R+=dtRGB;if(m_R>=255){  iType=1; m_R=255; };break;case 1:m_G+=dtRGB;if(m_G>=255){ iType=2;  m_G=255;};break;case 2:m_B+=dtRGB;if(m_B>=255){ iType=3;  m_B=255;};break;case 3:m_R-=dtRGB;if(m_R<=0){ iType=4;   m_R=0;};break;case 4:m_G-=dtRGB;if(m_G<=0){ iType=5;   m_G=0;};break;case 5:m_B-=dtRGB;if(m_B<=0){ iType=0;  m_B=0;};break;default:break;}COLORREF clo=RGB(m_R,m_G,m_B);return clo;
}//计算渐变   一次变三通道
COLORREF ResetColor2(BOOL &mbr,BOOL &mbg,BOOL &mbb,int &m_R,int &m_G,int &m_B,int dtRGB)
{if(mbr){m_R+=dtRGB;}else{m_R-=dtRGB;}if(mbg){m_G+=dtRGB;}else{m_G-=dtRGB;}if(mbb){m_B+=dtRGB;}else{m_B-=dtRGB;}if(m_R<=0){mbr=TRUE;m_R=0;};  if(m_R>=255){mbr=FALSE;m_R=255;};if(m_G<=0){mbg=TRUE;m_G=0;};  if(m_G>=255){mbg=FALSE;m_G=255;};if(m_B<=0){mbb=TRUE;m_B=0;};  if(m_B>=255){mbb=FALSE;m_B=255;};COLORREF clo=RGB(m_R,m_G,m_B);return clo;
}

使用:

void createList()
{CRect rcClient;GetClientRect(&rcClient);m_ListCtrl.Create( LVS_REPORT|LVS_OWNERDRAWFIXED |WS_CHILD|WS_VISIBLE|LBS_NOTIFY|LBS_NOINTEGRALHEIGHT&~WS_BORDER , rcClient, this, IDC_LIST_FIRST);//m_ListCtrl.SetColColor(0,RGB(10,150,20)); //设置列背景色//m_ListCtrl.SetColColor(2,RGB(30,100,90)); //设置列背景色//m_ListCtrl.SetColColor(4,RGB(150,160,30)); //设置列背景色//m_ListCtrl.SetBkColor(RGB(50,10,10));        //设置背景色
//  m_ListCtrl.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色m_ListCtrl.SetRowHeight(15);               //设置行高度m_ListCtrl.SetHeaderHeight(1.5);          //设置头部高度m_ListCtrl.SetHeaderFontHW(18,0);         //设置头部字体高度,和宽度,0表示缺省,自适应 m_ListCtrl.SetHeaderTextColor(RGB(255,200,100)); //设置头部字体颜色m_ListCtrl.SetHeaderBKColor(100,255,100,8); //设置头部背景色m_ListCtrl.SetFontHW(15,0);               //设置字体高度,和宽度,0表示缺省宽度
//  m_ListCtrl.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
//  m_ListCtrl.SetItemTextColor(3,1,RGB(255,0,0));  //设置单元格字体颜色m_ListCtrl.InsertColumn(0,_T("测试1"),LVCFMT_CENTER,255);m_ListCtrl.InsertColumn(1,_T(" "),LVCFMT_CENTER,55);m_ListCtrl.InsertColumn(2,_T("测试2"),LVCFMT_CENTER,255); int _R1,_G1,_B1,_R2,_G2,_B2;BOOL br=FALSE,bg=FALSE,bb=FALSE;int iB=0;int dt=20;_R1=_R2=100;_G1=_R2=255;_B1=_R2=255;for(int k=0;k<100;k++){int n=0;CString str;str.Format(_T("%04d"),k+1);m_ListCtrl.InsertItem(k,str);m_ListCtrl.SetItemText(k,1,_T(" "));m_ListCtrl.SetItemText(k,2,_T("张三")+str);COLORREF col1=ResetColor1(iB,_R1,_G1,_B1,dt);COLORREF col2=ResetColor2(br,bg,bb,_R2,_G2,_B2,dt);m_ListCtrl.SetItemColor(0,k,col1); //设置指定单元背景色m_ListCtrl.SetItemColor(2,k,col2); //设置指定单元背景色COLORREF colText1=RGB(ReverseValue(_R1),ReverseValue(_G1),ReverseValue(_B1));COLORREF colText2=RGB(ReverseValue(_R2),ReverseValue(_G2),ReverseValue(_B2));m_ListCtrl.SetItemTextColor(0,k,colText1);  //设置文本颜色m_ListCtrl.SetItemTextColor(2,k,colText2);  //设置文本颜色}SetWindowLong(m_ListCtrl.m_hWnd ,GWL_EXSTYLE,WS_EX_CLIENTEDGE);m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES);                     //设置扩展风格为网格}

效果

本demo使用了ClistCtrl自绘

链接改变 自绘 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景及其动态创建中的问题_曲终人散121的博客-CSDN博客_clistctrl的report风格自绘

RGB取反,渐变色计算相关推荐

  1. java对rgb取反_颜色取反 rgb COLORREF | 学步园

    编码时遇到下面问题 背景颜色和前景颜色需要取反 COLORREF m_clr[5]; //背景颜色 m_listPD.SetItemData(nCount,m_clr[nUltraOrder]); / ...

  2. 向量概念,零向量,向量取反,计算向量的长度,单位向量

    参考的是<游戏和图形学的3D数学入门教程>,非常不错的书,推荐阅读,老外很喜欢把一个东西解释的很详细. 1.向量概念: 具有方向和大小.没有位置观念.比如下图红圈圈中的两个向量是相同的,因 ...

  3. 原码、反码、补码转换和取反符号的运算规则

    一.原码,反码,补码之间的转换 1. 正数 正数的原码.反码.补码相同. 以数字10为例: 10(在计算机中int类型是32位,为了简便这里以8位来进行运算) 原码=反码=补码:0000 1010 2 ...

  4. python 取反操作符(~)

    误人子弟呀 误人子弟,看了几篇博客,真的是坑 ~ : 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 .~x 类似于 -x-1 1.计算依据: ①正数的原码.反码.补码都是一样的 ...

  5. C语言(算术、左移、赋值、位、sizeof计算大小、取反~、强制转换、条件)操作符..

    1,算术操作符:+ - * /  % float函数,浮点型,在9/2两边,显示小数任一一个数显示小数,结果都会显示4.5 int a = 9 % 2;//(取模,或者取余) printf(" ...

  6. python取反计算

    @[TOC]python取反计算 假设是8位存储,则1的原码为0000 0001,补码为0000 0001(正数的原码.反码.补码都是本身) 按理解~1是按位取反得到1111 1110,计算机以111 ...

  7. matlab图像取反_matlab对图像操作函数的详解

    一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...

  8. 反码求和校验: 一个数加上自己取反得到的数正是时钟轮盘上最大那个数

    反码求和校验: 反码求和的过程更简单一些,将原始信息每16bit取反,求和,结果存在检验和字段中,接收端同样对每个16bit进行二进制反码求和,接收方在计算中包含发送方存放的检验和,最终结果应该全为1 ...

  9. 复习一个知识点——原、反、补码以及取反操作

    一.相关概念 1.1  机器数与真值 ·机器数  计算机中存储的数据都是带符号的二进制数,例如:5 → 0000 0101 , -5 → 1000 0101  此类数值称之为机器数. ·真值  为区别 ...

最新文章

  1. 网络存储导论第七章:重要系统灾备方法
  2. 二分查找算法为什么要先排序
  3. python多线程读取文件夹下的文件_是否可以使用python多线程从文件夹数读取文件数,并处理这些文件以获得组合结果?...
  4. php变量的引用与计数规则
  5. Document Builder: REMOVE_CC_DEFAULT_TEXTS
  6. html4基础,HTML 基础 4
  7. Django model select的各种用法详解
  8. 如何减小电压跟随器输出电阻_补课贴 | 关于运算放大器和比较器的异同,那些你不得不知道的小知识!...
  9. Android 9.0的One UI系统,三星S9/S9+更新One UI 安卓9.0已正式推送
  10. Windows 10 修改域用户密码
  11. 用计算机代码模拟基因,一种通过计算机程序模拟产生简化DNA甲基化测序数据的方法与流程...
  12. ubuntu20.04下内核源码下载分析
  13. 华为2017年营收突破6000亿;阿里巴巴全球总经理离职;亚马逊将关闭音乐存储服务丨价值早报
  14. 三维动画在计算机上的应用,三维动画运用领域有哪些地方?
  15. CYUSB3014固件部分低版本工程在Eclipse中编译得到img文件时无效的解决方案
  16. 爬虫学习笔记 -- 实战某电影网(lxml库版)
  17. Mqtt ----心跳机制 长链接 ping
  18. 在Windows下使用Python编程
  19. 完成一个STM32的USART串口通讯程序
  20. 海思HI35xx语音识别方案

热门文章

  1. 十、RISC-V SoC外设——timer定时器 代码讲解
  2. 华为AC和AP的配置及升级方式
  3. 安装MinIO和使用MinIO Java SDK实现对文件的基本操作
  4. Contest1003 - 河南工程学院2022级新生周赛(三)
  5. 超快捷还原达梦数据库dmp
  6. windows10 杀掉一个端口
  7. <<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料
  8. 数据库 第三章习题(部分)
  9. Fatfs配置与编译
  10. 和一个在国外朋友的聊天