GDI+学习笔记7-统计报表的图形绘制

2023-11-20

图形编程:
SetPixel: 设置指定点的颜色
COLORREF SetPixel(HDC hDC,int X,int Y,COLORREF crColor);
hDC: 绘制点的DC
X,Y: 坐标位置
crColor: 设置的颜色
返回值为设置颜色之前,点(x,y)的颜色

SetPixel(hdc,100,200,RGB(255,0,0));
COLORREF GetPixel(HDC hDC,int X,int Y): 获取点的颜色

MoveToEx设置线的绘制起点:
MoveToEx(HDC hDC,int X,int Y,LPPOINT(lpPoint));
参数lpPoint就是返回旧的起点坐标,参数为NULL时,表示不返回旧的起点坐标

LineTo:画线
LineTo(HDC hDC,int X,int Y);
示例绘制一条从(100,200)到(300,400)的直线:
::MoveToEx(hdc,100,200,NULL);
::LineTo(hdc,300,400);

Rectangle: 绘制矩形
Rectangle(HDC hdc,int left,int top,int right,int bottom);

在GDI中绘制空心矩形:
::SelectObject(hdc,GetStockObject(NULL_BRUSH));
Rectangle(hdc,100,200,100+300,200+400);

Ellipse: 绘制椭圆
Ellipse(HDC hdc,int left,int top,int right,int bottom);
示例代码:
SelectObject(hdc,GetStockObject(NULL_BRUSH));
Ellipse(hdc,100,100,300,300);

Pie: 绘制饼
BOOL Pie(
  HDC hdc,
  int nLeftRect,
  int nTopRect,
  int nRightRect,
  int nBottomRect,
  int nXRadial1,
  int nYRadial1,
  int nXRadial2,
  int nYRadial2
);
示例代码:
SelectObject(hdc,GetStockObject(NULL_BRUSH));
Pie(hdc,470,440,690,690,692,550,582,441);

库存画笔的选用:
SelectObject(hdc,GetStockObject(WHITE_PEN));
获取并选进宽度为1,颜色为白色,样式为实线的画笔

SelectObject(hdc,GetStockObject(BLACK_PEN));
获取并选进宽度为1,颜色为黑色,样式为实线的画笔

SelectObject(hdc,GetStockObject(NULL_PEN));
获取并选进空画笔

CreatePen: 创建画笔
HPEN CreatePen(int fnPenStyle,int nWidth,COLORREF crColor);
fnPenStyle:画笔样式
PS_SOLID: 实心笔
PS_DASH:  短线式, 要求width<=1
PS_DOT:  点式笔,
PS_DASHDOT
PS_DASHDOTDOT
PS_NULL, 笔不可见
PS_INSIDEFRAME 实心笔,但笔宽向里扩展

创建、使用和销毁自定义画笔:
{
// 创建自定义画笔
HPEN hPen=CreatePen(PS_SOLID,1,RGB(42,187,203));
// 使用自定义画笔
HPEN hPenOld=(HPEN)SelectObject(hdc,hPen);
MoveToEx(hdc,78,315,NULL);
LineTo(hdc,150,170);
// 销毁自定义画笔
SelectObject(hdc,hPenOld);
DeleteObject(hPen);
}

库存画刷:
SelectObject(hdc,GetStockObject(WHITE_BRUSH));
LTGRAY_BRUSH: 亮灰色画刷
GRAY_BRUSH: 灰色画刷
DKGRAY_BRUSH: 暗灰色画刷
BLACK_BRUSH: 黑色画刷
NULL_BRUSH: 空画刷,透明画刷

CreateSolidBrush: 创建单色画刷
HBRUSH CreateSolidBrush(COLORREF color);
示例:使用蓝色画刷填充指定矩形:
{
// 创建自定义单色画刷
HBRUSH hbr = CreateSolidBrush(RGB(0,0,255));
// 选进自定义单色画刷并备份旧画刷
HBRUSH hBrushOld=(HBRUSH)SelectObject(hdc,hbr);
// 填充指定矩形
Rectangle(hdc,480,170,520,316);
SelectObject(hdc,hBrushOld);
DeleteObject(hbr);
}

CreateHatchBrush: 创建带有阴影图案的画刷
HBRUSH CreateHatchBrush(
  _int fnStyle,
  _COLORREF clrref
);

CreatePatternBrush: 创建画刷
HBRUSH CreatePatternBrush(HBITMAP hbm);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GDI+学习笔记7-统计报表的图形绘制 的相关文章

  • 计算机图形学(三维观察投影线、视图变换、投影变换)

    一 三维观察流水线 概念 xff1a 将建立的三维场景显示在二维视口的过程称为三维观察流水线 在三维观察流水线中 xff0c 也就是在将三维场景显示在二维视口的过程中 xff0c 需要在不同坐标系下进行不同的操作 xff0c 这些坐标系包括
  • MFC计算机图形学(3)

    之前我们已经可以画出直线和曲线了 但是算法虽容易理解 xff0c 但是复杂度高 xff0c 今天就介绍比较流行的DDA画线法 xff0c 还有 xff0c 对鼠标进行事件有所响应 xff0c 即 xff0c 在画板上 xff0c 鼠标左键单
  • OpenGL入门教程之 纹理

    引言 我们已经了解到 我们可以为每个顶点添加颜色来增加图形的细节 从而创建出有趣的图像 但是 如果想让图形看起来更真实 我们就必须有足够多的顶点 从而指定足够多的颜色 这将会产生很多额外开销 因为每个模型都会需求更多的顶点 每个顶点又需求一
  • 图形图像学习随笔:计算机图形学的一些基本概念

    本文内容摘抄于 计算机图形学的概念 一 计算机图形学的范畴 1 图形主要分为两类 一类是基于线条信息表示的 如工程图 等高线地形图 曲面的线框图等 另一类是明暗图 也就是通常所说的真实感图形 2 计算机图形学利用计算机建立图形所描述的场景和
  • 用Sutherland-Hodgman算法实现裁剪任意凸多边形

    一 实验目的 用Sutherland Hodgman算法实现裁剪任意凸多边形 二 实验工具 VC6 0 三 实验步骤 思想 每次用窗口的一条边界以及其延长线来裁剪多边形 裁剪得到的多边形的顶点由两部分组成 落在可见一侧的原多边形顶点 多边形
  • unity三种图片格式

    本文转载自 http blog csdn net caption deng article details 52366907 ARGB 是一种色彩模式 也就是RGB色彩模式附加上Alpha 透明度 通道 常见于32位位图的存储结构 RGB
  • Visual Studio 2019 + OpenGL环境配置

    使用的是 gl h glu h glaux h 下载目录 https download csdn net download boyinc0de 11171372 在 接下来 包含目录对应下载下来的文件 解压开来的include文件夹 库目录
  • 实验一 实现改进Bresenham算法

    实验一 实现改进Bresenham算法 一 目的 1 了解直线生成基本原理和常用方法 2 掌握改进Bresenham算法的基本原理和步骤 3 使用C OpenGL编程实现如下内容 输入线段的起始点和终止点坐标位置 利用改进Bresenham
  • 基于QT绘制可交互性的Bezier曲线

    前言 因为项目需要 要做一款类似AI里面的曲率工具出来 其实也类似Photoshop里面的钢笔工具 所以写了个demo来演练一番 之前是不懂Bezier的 但是网上找到的源码都是固定点的 但无论是钢笔工具还是曲率工具都是要能与鼠标键盘交互的
  • 2020年 IEEE VIS 科学可视化与体渲染论文整理与分析

    因为最近工作的关系 需要研究一下IEEE VIS中2017年以后的与我之前主要方向 体渲染 医学可视化 有关的论文 我把这些年全部的论文进行了筛选和梳理 总共筛选出57篇论文 打算写一个文章来记录这些内容 这个栏目是2020年的5篇论文的介
  • 计算机图形学基础:双向反射分布函数 BRDF

    文章目录 光照 照明 Illumination 预备知识 球面坐标 Spherical Coordinate 立体角 Solid Angle 投影面积 Foreshortened Area 光能 Radiant Energy 光通量 Rad
  • BRDF详解(包括:irradiance,radiance,intensity,立体角)

    BRDF BRDF是双向反射分布函数 Bidirectional Reflectance Distribution Function BRDF 用来定义给定入射方向上的辐射照度 irradiance 如何影响给定出射方向上的辐射率 radi
  • 【OpenGL】机器人手臂的实现

    一 基本功能 实现了机器人的一只手臂 由上臂 下臂 五根手指共同组成 通过A S D F G键向上旋转 通过a s d f g键向下旋转 通过方向键left和right转向 通过up和down实现放缩 效果图如下 二 实现过程 1 实现手臂
  • 3D茶壶绘制_2021秋季《计算机图形学》_基于《计算机图形学(第四版)》D.H.&M.P.B.&W.R.C.

    一 实验目的 绘制3D茶壶 形状为传统的紫砂茶壶 用光照模型着色 用键盘实现旋转 二 实验环境 Visual Studio 2019 Windows 10 三 算法分析与设计 四 实验结果 旋转 五 附录 include
  • 关于欧拉角的问题

    一 简单介绍 自己主要做一个知识记录 想着学了还是要写点东西的 首先我们可以把欧拉角看成是描述方位的一种方法 我们可以用欧拉角来表示旋转 也可以用四元数 以及用矩阵来表示旋转 欧拉角是一种常用的描述方位的方法 在这里简单的介绍下方向和方位的
  • 改进的z-buffer算法实现 c

    一 实验目的 改进的z buffer算法实现 二 实验工具 VC6 0 三 实验步骤 算法思想 先将Z缓冲器中各单元的初始值置为最小值 当要改变某个象素的颜色值时 首先检查当前多边形的深度值是否大于该象素原来的深度值 保存在该象素所对应的Z
  • 62.[GIS基础]笛卡尔坐标系

    文章目录 笛卡尔坐标系 多坐标系 坐标系的嵌套 坐标变换 坐标系转换 转载请注明原始链接 http blog csdn net a464057216 article details 54578069 后续此博客不再更新 欢迎大家搜索关注微信
  • 判断一个点是否在圆内(三点确定一个圆)

    三角形的外接圆圆心是任意两边的垂直平分线的交点 三角形外接圆圆心叫外心
  • GDI+学习笔记四-双缓冲图形类

    双缓冲图形 问题 当在窗体中绘制较为复杂的图形对象时 常会出现闪烁的问题 NET Framework解决方案 提供了双缓冲功能 原理是 当启用双缓冲时 所有绘制操作首先呈现到内存缓冲区 而不是屏幕上的绘图图面 所有绘制操作完成后 内存缓冲区
  • 全局光照算法:reflective shadow maps

    1 技术理解 RSM的全称是reflective shadow maps 受到Instant Radiosity这个离线技术的启发 其思想和ShadowMap的思想近似 在正式介绍和了解这个技术之前 我需要确定RSM用处何在 我想 RTR4

随机推荐

  • 【shell脚本通过curl调用判断k8s pod 是否启用成功】

    获取到指定的pod name viewer kubectl n skiff nsfdemo ns get pod grep viewer awk print 1 根据pod name 获取指定pod IP viewerIp kubectl
  • 【源码篇】基于SSM+JSP实现的学生宿舍管理系统

    系统介绍 基于SSM JSP实现的学生宿舍管理系统是一个基于B S模式的学生宿舍管理系统 为学生 学校和宿管阿姨搭建了一个灵活自由并且安全可靠的管理平台 系统设计了6大菜单模块 分别是 学生管理 学生信息的添加 修改 删除 查询 Excel
  • VScode+PHPstudy配置PHP开发环境详解

    这篇文章主要介绍了VScode PHPstudy配置PHP开发环境的步骤 整理了官方以及优秀第三方的内容 对于学习和工作有一定借鉴意义 准备安装的软件 VScode和PHPstudy 链接 https pan baidu com s 1T2
  • HTTP报文结构

    1 URL HTTP使用统一资源定位符 URL 协议 主机 端口 路径 2 HTTP 3 HTTP请求报文 请求行 首部 空行 主体 客户端发送一个HTTP请求到服务器的请求报文如下 1 请求行 方法 URL 空行 协议的版本 中间空格隔开
  • Qt公有槽和私有槽的区别

    Qt遵循C 的规则 当槽函数作为一个成员函数 公有槽可以被其他类调用 而私有槽只能被类自身调用 当槽函数被信号触发而被调用时 公有槽和私有槽没有区别 它们都能被外部信号触发 参考链接 https stackoverflow com ques
  • JavaEE学习记录day11 IO流02 字符流、转换流、Properties集合

    1 字符流 1 1为什么会出现字符流 理解 字符流的介绍 由于字节流操作中文不是特别的方便 所以Java就提供字符流 字符流 字节流 编码表 中文的字节存储方式 用字节流复制文本文件时 文本文件也会有中文 但是没有问题 原因是最终底层操作会
  • 黑幕!阿里P8爆出学透这份算法面试文档,不再怕任何大厂算法题

    为什么要学习数据结构和算法 随着应用程序变得越来越复杂和数据越来越丰富 几百万 几十亿甚至几百亿的数据就会出现 而对这么大对数据进行搜索 插入或者排序等的操作就越来越慢 数据结构就是用来解决这些问题的 阅读本教程前 您需要了解的知识 在您开
  • FastDFS storage服务器安装Nginx

    环境准备 操作系统 Centos 服务器 192 168 60 165 storage服务器 软件包 fastdfs nginx module 1 20 tar gz nginx 1 14 0 tar gz 软件包下载地址 待补充 第一步
  • Hive 窗口函数如何设置窗口大小

    select city year taxes sum money over as sample1 所有行相加 sum money over partition by city as sample2 按city分组 组内数据相加 sum mo
  • Linux下用inotify-tool实时监控服务器文件

    说明 服务器系统 CentOS 文件目录 home web os 实现目的 当 home web os下面除过cache目录之外 任何文件发生变化时 记录日志并保存 具体操作 一 安装Inotify tools工具 1 查看服务器内核是否支
  • Android SurfaceFlinger服务(三) ----- 本地图层Layer创建

    在上一篇文章中 主要分析了Surface的创建过程 对于Layer图层的创建并没有深入跟踪分析 这篇文章将分析Layer图层的创建 并分析handle gbp这两个变量的来源 在SurfaceFlinger中会根据flags的值创建不同的l
  • CMake中include的使用

    CMake中的include命令用于从文件或模块 file or module 加载并运行CMake code 其格式如下 include
  • 【算法】Dijkstra最短路算法

    上周我们介绍了神奇的只有五行的Floyd最短路算法 它可以方便的求得任意两点的最短路径 这称为 多源最短路 本周来来介绍指定一个点 源点 到其余各个顶点的最短路径 也叫做 单源最短路径 例如求下图中的1号顶点到2 3 4 5 6号顶点的最短
  • VS+QT开发Ocx/ActiveX控件 一

    VS QT开发Ocx ActiveX控件 一 VS QT开发Ocx ActiveX控件 网页中全屏 二 QT开发ActiveX控件 一 所用IDE版本 需用管理员权限 二 创建ActiveX 三 qt desinger 四 regsvr32
  • java虚拟机win10_Win10系统启动软件出现Java虚拟机错误的解决方法

    在 1 为Java设置新的系统变量 当Java需要更大的全局最大堆内存大小时 通常会出现Java虚拟机错误 用户通过扩展分配给Java的最大RAM来解决该问题 用户可以通过建立新的Java System Variable来实现 如下所示 使
  • Linux Debian Jenkins快速搭建配置并运行

    Jenkins安装 参考Debian Jenkins Packageshttps pkg origin jenkins io debian stable 加Key curl fsSL https pkg jenkins io debian
  • C++98 auto_ptr智能指针

    auto ptr 是C 98定义的智能指针模板 其定义了管理指针的对象 可以将new获得 直接或间接 的地址赋给这种对象 当对象过期时 其析构函数将使用delete来释放内存 用法 头文件 include
  • chatgpt赋能python:Python金额计算

    Python金额计算 Python是一种高级编程语言 因其易于阅读 简单 灵活和易于学习而广受欢迎 它还具有强大的数学和计算功能 因此 它是一种非常流行的用于金额计算的工具 在本文中 将介绍如何使用Python进行金额计算 包括不同的货币格
  • mysql-client客户端安装

    测试 生产环境中 有时并不需要在本地安装一个mysql server服务 只需要安装一个登录mysql server 的mysql的客户端client centos6系统上安装mysql client的方式 yum install mysq
  • GDI+学习笔记7-统计报表的图形绘制

    图形编程 SetPixel 设置指定点的颜色 COLORREF SetPixel HDC hDC int X int Y COLORREF crColor hDC 绘制点的DC X Y 坐标位置 crColor 设置的颜色 返回值为设置颜色