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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app如何生成正式的APK

第一步: 进入dcloud官网https://dcloud.io/,点击开发者后台进入登录注册页面 第二步:登录之后跳到项目列表,选择自己想要打包的项目 点击进去如果没有生成证书,点击生成证书,如果显示证书已生成就不用管了…

OpenJDK下载安装教程

《OpenJDK官网》 进入官网,点击Installing----》jdk.java.net 随便进去一个JDK版本 根据自己的操作系统下载对应的二进制JDK即可(我的是Windows) 配置环境变量 JAVA_HOME 你的JDK路径\jdk-17PATH追加内容 WINR输入CMD java -version

参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践

今天看到一篇挺有意思的文章,做的是跟医疗图像分割相关的工作,但是不像之前看到的一些工作一味地去追求高精度,因为医疗领域本身就是一个相对特殊的行业,对于模型产生的结果的精确性要求是很高的,带来的是参数量级的庞…

el-cascader 数据的回显

<el-cascaderplaceholder"试试搜索":options"allOptions":props"{ multiple: true }"v-model"options"filterable style"width: 80%;max-height:240px;overflow-y:scroll;"></el-cascader> allOptions里面包含…

【Vue】在el-table的el-table-column中,如何控制单行、单列、以及根据内容单独设置样式。例如:修改文字颜色、背景颜色

用cell-style表属性来实现。在官网中是这样表述这个属性的。 在el-table中用v-bind绑定此属性。&#xff08;v-bind的简写是&#xff1a;&#xff09; <el-table:data"options":cell-style"cell"><el-table-column prop"id" label"…

文心一言 VS 讯飞星火 VS chatgpt (68)-- 算法导论6.5 7题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;68&#xff09;-- 算法导论6.5 7题 七、试说明如何使用优先队列来实现一个先进先出队列&#xff0c;以及如何使用优先队列来实现栈(队列和栈的定义见 10.1 节。) 文心一言&#xff1a; 优先队列是一种数据结构&#xff0c;其中…

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 卷积神经网络&#xff0c;简称为卷积网络&#xff0c;与普通神经网络的区别是它的卷积层内的神经元只覆…

【前端知识】React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置

React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouter&#xff08;hoc/with_router.js&#xff09; import { useNavigate } from "react-router-dom"; // 封装一个高阶组件 function withRou…

Stable Diffusion 使用教程

环境说明&#xff1a; stable diffusion version: v1.5.1python: 3.10.6torch: 2.0.1cu118xformers: N/Agradio: 3.32.0 1. 下载 webui 下载地址&#xff1a; GitHub stable-diffusion-webui 下载 根据自己的情况去下载&#xff1a; 最好是 N 卡&#xff1a;&#xff08;我的…

K8S:容器日志收集与管理

Kubernetes 里面对容器日志的处理方式&#xff0c;都叫作 cluster-level-logging&#xff0c;即&#xff1a;这个日志处理系统&#xff0c;与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证&#xff0c;无论是容器挂了、Pod 被删除&#xff0c;甚至节点…

PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案PHP使用Redis实战实录3&#xff1a;数据类型比较、大小限制和性能扩展 数据类型…

QT中UDP之UDPsocket通讯

目录 UDP&#xff1a; 举例&#xff1a; 服务器端&#xff1a; 客户端&#xff1a; 使用示例&#xff1a; 错误例子并且改正&#xff1a; UDP&#xff1a; &#xff08;User Datagram Protocol即用户数据报协议&#xff09;是一个轻量级的&#xff0c;不可靠的&#xff0…

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

C++复刻:[流光按钮]+[悬浮波纹按钮]

目录 参考效果实现main.cppdialog.hdialog.cppflowingRayButton.h 流动光线按钮flowingRayButton.cpp 流动光线按钮hoveringRippleButton.h 悬浮波纹按钮hoveringRippleButton.cpp 悬浮波纹按钮模糊知识点 源码 参考 GitHub地址 B站主页 效果 实现 main.cpp #include "…

RN 设置背景图片(使用ImageBackground组件)

在RN版本0.46版本的时候添加了ImageBackground控件。ImageBackground可以设置背景图片&#xff0c;使用方法和image一样&#xff0c;里面嵌套了其他的组件 import React from "react"; import { ImageBackground, StyleSheet, Text, View } from "react-native…

设计模式-中介者模式在Java中使用示例-客户信息管理

场景 欲开发客户信息管理窗口界面&#xff0c;界面组件之间存在较为复杂的交互关系&#xff1a;如果删除一个客户&#xff0c; 要在客户列表(List)中删掉对应的项&#xff0c;客户选择组合框(ComboBox)中客户名称也将减少一个&#xff1b; 如果增加一个客户信息&#xff0c;…

go web框架 gin-gonic源码解读01————Engine

go web框架 gin-gonic源码解读01————Engine gin-gonic是go语言开发的轻量级web框架&#xff0c;性能优异&#xff0c;代码简洁&#xff0c;功能强大。有很多值得学习的地方,最近准备把这段时间学习gin的知识点&#xff0c;通过engine&#xff0c;context&#xff0c;router…

git操作:修改本地的地址

Windows下git如何修改本地默认下载仓库地址 - 简书 (jianshu.com) 详细解释&#xff1a; 打开终端拉取git时&#xff0c;会默认在git安装的地方&#xff0c;也就是终端前面的地址。 需要将代码 拉取到D盘的话&#xff0c;现在D盘创建好需要安放代码的文件夹&#xff0c;然后…

监控无人机项目

监控无人机的开发涉及多个方面&#xff0c;涵盖硬件、软件和网络等领域。下面是一般情况下开发监控无人机系统的主要步骤&#xff1a; 确定需求和功能&#xff1a;明确您的监控无人机系统的目标和应用场景&#xff0c;确定需要的功能和特性&#xff0c;例如实时视频监控、目标…

Linux中软件RAID的使用

在Linux系统中目前以MD (Multiple Devices)虚拟块设备的方式实现软件RAID&#xff0c;利用多个底层的块设备虚拟出一个新的虚拟块设备&#xff0c;并且利用条带化(stripping)技术将数据块均匀分布到多个磁盘上来提高虚拟设备的读写性能&#xff0c;利用不同的数据冗余算法来保护…