MFC第二十三天 HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体
文章目录
- HBrush对闭合图形的填充
- HBITMAP位图资源的加载和平铺填充
- CFont类常用功能与LOGFONT结构体
- CPen类简介
HBrush对闭合图形的填充
HBRUSH创建:
a)实色填充:
HBRUSH CreateSolidBrush( COLORREF color);
b)栅格线填充:
HBRUSH CreateHatchBrush( int iHatch, COLORREF color);
c)平铺图填充:
HBRUSH CreatePatternBrush( HBITMAP hbm);
HBITMAP hBitmap = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_LOGO));
d)空填充:可以创建前三种任何一种,也可以创建第四种(空中)
HBRUSH CreateBrushIndirect( [in] const LOGBRUSH *plbrush);
对应的CBrush
CBrush::CreateBrushIndirectInitializes a brush with the style, color, and pattern specified in a LOGBRUSH structure.CBrush::CreateDIBPatternBrushInitializes a brush with a pattern specified by a device-independent bitmap (DIB).CBrush::CreateHatchBrush //Initializes a brush with the specified hatched pattern and color.
CBrush::CreatePatternBrush //Initializes a brush with a pattern specified by a bitmap 图片
CBrush::CreateSolidBrush // Initializes a brush with the specified solid color. 实色
CBrush::CreateSysColorBrush // Creates a brush that is the default system color.CBrush::FromHandleReturns a pointer to a CBrush object when given a handle to a Windows HBRUSH object.CBrush::GetLogBrush // Gets a LOGBRUSH structure.
/* Hatch Styles */ 填充风格
#define HS_HORIZONTAL 0 /* ----- */
#define HS_VERTICAL 1 /* ||||| */
#define HS_FDIAGONAL 2 /* \\\\\ */
#define HS_BDIAGONAL 3 /* / */
#define HS_CROSS 4 /* +++++ */
#define HS_DIAGCROSS 5 /* xxxxx */
#define HS_API_MAX 12
typedef struct tagLOGBRUSH {UINT lbStyle;COLORREF lbColor;ULONG_PTR lbHatch;
} LOGBRUSH, *PLOGBRUSH, *NPLOGBRUSH, *LPLOGBRUSH;
CBrush br1;br1.CreateSolidBrush(0xffff00); //纯色填充dc.SelectObject(&br1);dc.SelectObject(&pOldPen); //默认pen 接近0的黑色dc.Pie(296, 80, 800, 400, 600, 134, 600, 400);LOGBRUSH lb{ BS_NULL };CBrush br3;br3.CreateBrushIndirect(&lb);dc.SelectObject(&br3);POINT pts[] = { {40,200},{130,30},{300,250},{150,300} };dc.Polygon(pts, _countof(pts));
HBITMAP位图资源的加载和平铺填充
CBitmap bitmap;bitmap.LoadBitmap(IDB_LOGO);CBrush br;br.CreatePatternBrush(&bitmap); dc.SelectObject(&br);dc.Rectangle(rect.left, rect.top, rect.right, rect.bottom);
CFont类常用功能与LOGFONT结构体
CFont类的主要函数:
a)CFont::CreateFont:参数太多没法用
b)使用结构体创建比较方便:
BOOL CreateFontIndirect( const LOGFONT* lpLogFont );
c)GetLogFont:获取字体信息,是以上函数的反函数。
d)简易创建函数:他的大小是以上函数的十分之一,所以调用时要乘以10。
CreateFont和CreateFontIndirect中间加Point。Requested font height in tenths of a point. (For instance, pass 120 to request a 12-point font.)
typedef struct tagLOGFONT { LONG lfHeight; LONG lfWidth; LONG lfEscapement; //书写角度LONG lfOrientation; //基线角度LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; //删除线BYTE lfCharSet; //字符集表示 BYTE lfOutPrecision; //输出精度BYTE lfClipPrecision; //剪辑精度BYTE lfQuality; //字体质量BYTE lfPitchAndFamily; //字体的字符间距和族标识TCHAR lfFaceName[LF_FACESIZE]; //字体名称
} LOGFONT;
CFont font;//font.CreatePointFont(100 * 3 / 2, _T("黑体")); //简易函数LOGFONT lf{ 15 * 3 / 2 };lf.lfItalic = TRUE;lf.lfWeight = 700;lf.lfCharSet = GB2312_CHARSET;lf.lfEscapement = 200;_tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("黑体"));font.CreateFontIndirect(&lf);auto pOldFont = dc.SelectObject(&font);//dc.SetBkMode(TRANSPARENT); //设置文字的透明色 //真透明 //dc.SetTextColor(0xff);dc.SetBkColor(0xffff00); //假透明dc.DrawText(_T("这世间本没有佛"), rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE);pOldFont->GetLogFont(&lf);
CPen类简介
CPen::CreatePen
Creates a logical cosmetic or geometric pen with the specified style, width,and brush attributes, and attaches it to the CPen object.CPen::CreatePenIndirectCreates a pen with the style, width, and color given in a LOGPEN structure,and attaches it to the CPen object.CPen::FromHandle //Returns a pointer to a CPen object when given a Windows HPEN.
CPen::GetExtLogPen //Gets an EXTLOGPEN underlying structure.
CPen::GetLogPen //Gets a LOGPEN underlying structure.
CPen::operator HPEN //Returns the Windows handle attached to the CPen object.
/* Pen Styles */
#define PS_SOLID 0 实线
#define PS_DASH 1 /* ------- */ 破折线
#define PS_DOT 2 /* ....... */ 点
#define PS_DASHDOT 3 /* _._._._ */ 点划线
#define PS_DASHDOTDOT 4 /* _.._.._ */双点划线
#define PS_NULL 5 无线条
typedef struct tagLOGPEN {UINT lopnStyle; // 线条样式POINT lopnWidth; // 线条宽度COLORREF lopnColor; // 线条颜色
} LOGPEN, *PLOGPEN
CRect rect;GetClientRect(&rect);CPen pen; //用来绘制边框的pen.CreatePen(PS_SOLID, 5, RGB(0, 255, 255));auto pOldPen = dc.SelectObject(&pen); //返回之前选入的画笔的句柄//绘图操作结束后,会使用SelectObject函数将之前的画笔 重新选入 DC,以保证 DC 的状态不受影响LOGPEN logPen;GetObject(pOldPen->GetSafeHandle(), sizeof(logPen), &logPen);CPen p2;p2.CreatePen(PS_DOT, 1, 0xff00);dc.SelectObject(&p2); dc.MoveTo(594, 31);dc.LineTo((196 + 710) / 2, (72 + 301) / 2);dc.LineTo(517, 414);
相关文章:
MFC第二十三天 HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体
文章目录 HBrush对闭合图形的填充HBITMAP位图资源的加载和平铺填充CFont类常用功能与LOGFONT结构体CPen类简介 HBrush对闭合图形的填充 HBRUSH创建: a)实色填充: HBRUSH CreateSolidBrush( COLORREF color);b)栅格线填充: HBRUSH CreateHa…...

深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令
目录 前言 一、scan 命令 二、数据库管理命令 select dbsize flushdb / flushall 前言 之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到,但是整个操作比较危险,可能会一下子的都太多的 key,阻塞 redis 服务器. …...

python+opencv实现显示摄像头,截取相关图片,录取相关视频
实时显示摄像头图像 按下空格键,截取图片 按下tab键,开始录制摄像内容,再次按下,结束录制 按下Esc键,关闭窗口 import cv2 import numpy#第几章图片 img_count0InitVideoFalse #第几个视频 video_count0 video_flagFa…...

第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法
0.摘要 尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用…...

指令收集:DOCKER+K8S
docker 1.镜像指令:docker images 1、docker images : 列出本地主机上的镜像OPTION字段说明: -a 列出所有本地镜像, -q 只显示镜像ID2、docker search 某个镜像名字 : 查找某个镜像加上 --limit 5 redisÿ…...

Minecraft 1.20.x Forge模组开发 05.矿石生成
我们本次尝试在主世界生成模组中自定义的矿石 效果演示 效果演示 效果演示 1.由于1.20的版本出现了深板岩层的矿石,我们要在BlockInit类中声明一个矿石的两种岩层形态: BlockInit.java package com.joy187.re8joymod.init;import java.util.function.Function;import java…...
运维面试大全
文章目录 第一阶段你是用过哪些Linux命令Linux 系统安全优化与内核优化经常使用shell脚本做什么软连接与硬链接的区别怎么查看文件IOS七层模型三次握手与四次挥手lvm 逻辑卷创建过程磁盘配额raid 磁盘阵列文本三剑客防火墙iptables与firewardLinux系统资源查询命令日志的八大等…...

【线程安全的讨论(一)】CPU多核缓存架构和JMM
CPU多核缓存架构 一、CPU多核缓存架构可见性问题乱序执行(指令重排) 二、JMM——Java内存模型 一、CPU多核缓存架构 计算机的基本组成图 CPU 缓存为了提高程序运行的性能,现代 CPU 在很多方面会对程序进行优化。CPU 的处理速度很快…...

以太网交换机的生成树协议STP
概述 网络环路带来的问题 广播风暴 广播帧在各个交换机之间反复转发,分别按顺时针和逆时针方向不停的同时兜圈。广播风暴会大量消耗网络资源,使得网络无法正常转发其他数据帧。 主机收到反复的广播帧,会大量消耗主机的资源。交换机的帧交换…...

手机照片转换成pdf怎么做?了解这几种方法就可以了
手机照片转换成pdf怎么做?转换照片为PDF的需求在日常生活中很常见。无论是收集有关旅行、家庭或工作的照片,将它们组织成一个PDF文件可以更方便地分享给朋友或同事。那么下面就给大家分享几个手机照片转换成pdf的方法。 虽然有多种软件和工具可以将照片转…...

跨境电商还有人在做吗,这十大选品技巧建议收藏!
随着电商的快速发展,无论国内或者国外电商,竞争都比较激烈,很多人觉得现在入行太晚了,玩不过那些老卖家。 不过我想说的是:做电商很重要的一点就是选品,那些很早一批老卖家可能也是借着红利期走过来的&…...

HTML快速学习
目录 一、网页元素属性 1.全局属性 2.标签 2.1其他标签 2.2表单标签 2.3图像标签 2.4列表标签 2.5表格标签 2.6文本标签 二、编码 1.字符的数字表示法 2.字符的实体表示法 三、实践一下 一、网页元素属性 1.全局属性 id属性是元素在网页内的唯一标识符。 class…...

centos7搭建k8s环境并部署springboot项目
之前看了很多文章,都是部署后一直报错,百度解决后下次又忘了,这次决定把从头到尾的过程记录下来方便下次再看,部署参考文章尚硅谷Kubernetes(k8s)视频学习笔记_尚硅谷k8s笔记_溯光旅者的博客-CSDN博客 1、…...
nuitka打包软件程序
将python代码打包成exe桌面程序 1、打包参数含义 """-–mingw64 默认为已经安装的visio stdio去编译-–standalone 独立环境,这是必须的(否则拷给别人无法使用)-–windows-disable-console 没有CMD控制窗口-–output-dirout 生成exe到out文件夹下面…...

12-3_Qt 5.9 C++开发指南_创建和使用静态链接库
第12章中的静态链接库和动态链接库介绍,都是以UI操作的方式进行,真正在实践中,可以参考UI操作产生的代码来实现同样的功能。 文章目录 1. 创建静态链接库1.1 创建静态链接库过程1.2 静态链接库代码1.2.1 静态链接库可视化UI设计框架1.2.2 qw…...
conda模式安装paddlepaddle2.4.2版本
conda模式安装paddlepaddle2.4.2版本 一、下载anaconda 2022.10 window-x86-x64.exe 清华镜像源Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,进去后根据自己的需要选择对应的版本下载 下载安装到磁盘空闲空间要大的D:\Pr…...
英语疑问句
文章目录 一般疑问句特殊疑问句 一般疑问句 英语肯定句怎么改成一般疑问句? 1.假如句子中有"情态动词、助动词、be动词"则直接提前。2.假如句子,只有实义动词,就要借助"do,does,did"放在句子前面,并将实义动词改为"…...
k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法
k8s证书更新 1. 查看证书过期时间 #通过文件查看证书过期时间 for item in find /etc/kubernetes/pki -maxdepth 2 -name "*.crt";do openssl x509 -in $item -text -noout| grep Not;echo $item;done #通过命令查看证书过期时间 kubeadm certs check-expirationk8…...

java实现日期拆分的方法
java实现日期拆分的方法 本文实例讲述了java实现日期拆分的方法。分享给大家供大家参考。具体如下: 如:计算6-1至6-5之间的日期天数及具体日期,预期的结果是得到: 6-1 6-2 6-3 6-4 6-5 以下是我利用java 日历类做的实现&am…...

Ansible之playbook剧本编写
一、playbook的相关知识 1.playbook简介 playbook是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...