SetROP2函数 ——设置前景色与背景色
一个Windows API SetROP2(int nDrawMode)的使用
该函数的主要的作用是根据nDrawMode设置的方式重新设定绘图的方式,下面就不同的nDrawMode值具体解释绘图模式是如何改变的。
首先就nDrawMode的取值有以下的情况:
R2_BLACK Pixel is always black. //所有绘制出来的像素为黑色
R2_WHITE Pixel is always white. //所有绘制出来的像素为白色
R2_NOP Pixel remains unchanged. //任何绘制将不改变当前的状态
R2_NOT Pixel is the inverse of the screen color. //当前绘制的像素值设为屏幕像素值的反,这样可以覆盖掉上次的绘图,(自动擦除上次绘制的图形)
R2_COPYPEN Pixel is the pen color. //使用当前的画笔的颜色
R2_NOTCOPYPEN Pixel is the inverse of the pen color. //当前画笔的反色
//下面是当前画笔的颜色和屏幕色的组合运算得到的绘图模式。
R2_MERGEPENNOT Pixel is a combination of the pen color and the inverse of the screen color (final pixel = (NOT screen pixel) OR pen).
R2_MASKPENNOT Pixel is a combination of the colors common to both the pen and the inverse of the screen (final pixel = (NOT screen pixel) AND pen).
R2_MERGENOTPEN Pixel is a combination of the screen color and the inverse of the pen color (final pixel = (NOT pen) OR screen pixel).
R2_MASKNOTPEN Pixel is a combination of the colors common to both the screen and the inverse of the pen (final pixel = (NOT pen) AND screen pixel).
R2_MERGEPEN Pixel is a combination of the pen color and the screen color (final pixel = pen OR screen pixel).
R2_NOTMERGEPEN Pixel is the inverse of the R2_MERGEPEN color (final pixel = NOT(pen OR screen pixel)).
R2_MASKPEN Pixel is a combination of the colors common to both the pen and the screen (final pixel = pen AND screen pixel).
R2_NOTMASKPEN Pixel is the inverse of the R2_MASKPEN color (final pixel = NOT(pen AND screen pixel)).
R2_XORPEN Pixel is a combination of the colors that are in the pen or in the screen, but not in both (final pixel = pen XOR screen pixel).
R2_NOTXORPEN Pixel is the inverse of the R2_XORPEN color (final pixel = NOT(pen XOR screen pixel)).
总之,上述api的一个作用是在需要改变绘图的模式时,不需要重新设置画笔,只需要设置不同的绘图的模式即可达到相应的目的。
程序橡皮筋绘图程序的使用实例:
void CXXXView::OnMouseMove(UINT nFlags, CPoint point)
{
// 按下左键移动开始画图
if (nFlags == MK_LBUTTON)
{
// 创建画笔RGB(0x00, 0x00, 0xFF)
HPEN hPen = CreatePen(PS_SOLID, m_PenWidth, m_PenColor);
// 选进DC
::SelectObject(m_hMemDC, hPen);
//设置系统色彩模式取反色
int oldRop=::SetROP2(m_hMemDC,R2_NOTXORPEN);
// 画线
::MoveToEx(m_hMemDC,m_pOrigin.x,m_pOrigin.y, NULL);
::LineTo(m_hMemDC, m_pPrev.x,m_pPrev.y);
//::SetROP2(m_hMemDC,oldRop);//回复系统默认色彩模式
::MoveToEx(m_hMemDC, m_pOrigin.x, m_pOrigin.y, NULL);
::LineTo(m_hMemDC, point.x, point.y);
m_pPrev = point;
Invalidate(FALSE);
}
}
R2_NOTXORPEN
举个例子,你使用R2_NOTXORPEN这种绘画模式,你用红色画笔在黑色背景上画一条直线,显示红色,但你再用这只笔在刚画的直线上重画一遍,就相当于把开始画的红线擦除掉了,划线的地方显示为背景色。
R2_NOT绘画模式同样有在同一个地方画两次相当于什么都没画的功能,不过R2_NOT绘画模式第一次画的时候显示颜色并不是你选定的画笔颜色,而是默认的颜色。
这就是这两种绘画模式的区别
SetROP2函数 ——设置前景色与背景色相关推荐
- Text组件新增内容通过tag_config设置前景色、背景色
Text组件新增内容时,可以通过tag_config给特定的字符串设定前景色.背景色等属性. self.text1.tag_config('red',foreground = 'red',backgr ...
- POI操作Excel设置前景色背景色
POI中背景颜色设置方法如下: HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setFillBackgroundColor(HSS ...
- python shell怎么调字体大小_Linux_Shell 设置字体 前景色 与 背景色 的几种方法
参考文章 1.在Linux终端输出带颜色的文字的方法 2. tput 设置字体颜色 方法一 设置字符编码, 设置 文字 的前景色 与 背景色 方法二 利用tput 指令, 设置 文字 的前景色 ...
- Winform中DataGridView设置前景色、单元格背景色、标题栏样式、禁止改变高宽、不显示空白行、清除选中样式、填充数据源、设置标题、设置单列宽度
场景 Winform中使用DataGridView实现加载数据并显示在led大屏中. 需要设置整个DataGridView的前景色.背景色.单元格颜色.标题栏样式.禁止 改变行高.列宽.不显示新增行. ...
- MFC之学习颜色矩形填充函数的使用、设置客户区背景色
1.笔记 1.1颜色填充矩形函数 函数原型: void CDC::FillSolidRect(LPCRECT lpRect,COLORREF clr); void CDC::FillSolidRect ...
- Python print函数设置字体效果和背景色
实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033 ...
- 微信小程序:enablePullDownRefresh、onReachBottomDistance 、动态设置窗口的背景色、动态设置下拉背景字体
一.enablePullDownRefresh 1.下拉刷新enablePullDownRefresh的支持 单页面配置json文件 {"enablePullDownRefresh" ...
- HTML中然后设置前景色,理解CSS前景色和透明度
前面的话 颜色的出现让网页不再只是黑白,运用好颜色设计,能让网页增色不少.一个网页给人们留下的第一印象实际上就是它的整体颜色.颜色的应用主要分为前景色.背景色和透明三个部分.本文主要介绍前景色和透明度 ...
- POI导出Excel设置单元格背景色
POI导出Excel设置单元格背景色 导出Excel的时候,没有设置背景色,用2003版本的Excel工具打开会出现文档单元格背景自动填充黑色的情况,没有找到好的解决方法,就主动给他填充一种颜色,问题 ...
最新文章
- 程序员带半箱辣条参加东京奥运,网友:这不是辣条,是狗粮!
- 电影推荐_亲和性分析_规则提取(数据挖掘入门与实践-实验6)
- 怎样取消Windows 2003 server 意外关机提示
- JavaWeb结合七牛云存储搭建个人相册服务
- [C++11]shared_ptr共享智能指针的初始化与使用
- 计算机完成逻辑运算的原理,计算机组成原理2.5.1逻辑运算.ppt
- CSS3 弹性盒子模型
- spring 处理带有特殊字符的请求_程序员笔记|常见的Spring异常分析及处理
- java 中文件outputstream的操作注意
- ubuntu 忘记root密码了不用怕,看这里
- 多线程—— Queue(储存进程结果)
- redis增加auth
- Windows10 如何删掉内置的 skype ?
- 数据挖掘之数据仓库详述
- windows 控制台cmd乱码的解决办法 chcp 65001
- C++描述 LeetCode 480. 滑动窗口中位数
- 迪文屏DMT12800K070_A2WTC踩坑实录(一)
- 机器学习之PCA原理入门
- Payload Inject And Fake
- opencv的极线几何