鱼C论坛

 找回密码
 立即注册
查看: 3487|回复: 1

[知识点备忘] 第021讲:窗口绘画:画笔2

[复制链接]
发表于 2015-8-30 00:44:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
知识点回顾:


1. 虚线、点线、点划线、点点划线这些样式的画笔,间隙部分默认是以白色填充


2. 设置上边这些画笔空隙的颜色

空隙的颜色是由设备环境的两个属性(背景模式和背景颜色)共同决定的。默认的背景模式是 OPAQUE(不透明),这意味着 Windows 使用背景颜色来填充空隙,注意,我们这里所说的背景颜色不是客户区的背景颜色,而是画笔对象的背景颜色。这个背景颜色默认就是白色的,这与许多程序在窗口类中用 WHITE_BRUSH 画刷来擦除窗口背景的做法相同。

如果你想修改其他的颜色,可以通过调用 SetBkColor 函数实现

Windows 也允许我们设置画笔对象的背景模式,总共有两种模式:透明(TRANSPARENT)和不透明(OPAQUE),刚才我们说了,默认是不透明的,所以我们看得到画笔对象的背景颜色,我们可以调用 SetBkMode 函数将背景模式设置为透明。

如果你不知道当前的背景模式是什么,可以调用 GetBkMode 函数来获得。


3. 绘图模式(混合模式)

当 Windows 使用一个画笔绘制直线时,它实际上是在将画笔的像素颜色和目标显示表面的像素颜色按位进行布尔运算。对像素颜色执行一个按位布尔运算,我们称之为“光栅操作”(Raster Operation),简称“ROP”,因为绘制一条直线涉及画笔的颜色和目标的颜色两种,所以这样的布尔运算就被称为“二元光栅操作”,或者“ROP2”,所以大家看到相关的函数 SetROP2 或者 GetROP2 并不是第二代的意思噢。

举个例子,我们想让客户区上的一条直线永远都显示出来,也就是说不会被背景的颜色覆盖了,那么我们可以这么做:
SetROP2(hdc, R2_NOT);
这样的话,无论设置什么颜色的客户区背景,画笔的颜色永远跟背景是相反的。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-19 17:38:21 | 显示全部楼层
难得的沙发嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 10:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表