Windows图形设备接口(GDI)

图形设备接口(GDI)是为与设备无关的图形设计的。

  • win系统提供了应用程序与具体设备分离的功能,由os将应用程序的图形输入转变为设备的输出。GUI的设备无关性是os的特色之一,用户通过通知GUI来加载相应的硬件设备。

图像刷新

  • 什么时候要刷新?
    窗口覆盖恢复,窗口移动,对象穿越(如光标移动)。
    图形刷新包括:1、刷新的请求 2、系统对刷新请求的相应 3、具体的刷新方法。

设备

一般指打印机,绘图仪等输出设备。

  • 获取设备环境
    ①响应WM_PAINT消息进行图形刷新时:
HDC hdc = BeginPaint(hwnd,&ps);//ps为PAINTSTRUCT类型,用于标识无效区域
//释放
EndPaint(hwnd,&ps);

②若不是由WM_PAINT消息驱动,则调用GetDC()

hdc = GetDC(hwnd);
//释放
ReleaseDC(hwnd,hdc);

③GetDCEx()是GetDC()的扩展,返回指向特定窗口的用户区或整个窗口的句柄,释放函数一样。

映射模式

用户在逻辑坐标系绘制与操作即可,映射模式定义了逻辑坐标系到设备的度量单元与方向的转换。

//设置模式:
SetMapMode(hdc,nMapMode);
//得到当前设备环境模式
nMapMode = GetMapMode(hdc);//窗口区域定义
SetWindowExtEx()
//视口区域定义
SetViewPortExtEx()

获取用户区尺寸

getWindowRect()
getClientRect()

绘图工具与颜色

画笔
创建:HPEN hp=(HPEN)GetStockObject():可获取系统定义的4种画笔。
hp=CreatePen()创建新画笔
将画笔选入设备环境:hpOld=SelectObject(hdc,hp)。SelectObject()函数会保存上一次画笔,所以删除前有必要的话可以恢复。
删除画笔:DeleteObject(hp):
颜色

RGB(255,255,255)

常用绘图函数

设置当前画笔位置:MoveToEx()
从当前位置向指定位置画直线:LineTo()
线段依次连接给定点:PolyLine()
弧线:Arc()
扇形:Pie()
填充的矩形:Rectangle()
圆角矩形:RoundRect()
椭圆:Ellipse()
多边形:Polygon()

文本输出与字体设置

windows系统提供7种基本字体。
选择系统字体步骤:

  1. 定义字体句柄变量HFONT hf
  2. 获取系统字体句柄:hf=(HFONT)GetStockObject()
  3. 将字体选入设备环境: SetObject(hf)

创建自定义字体

hf=CreateFont()

设置字体和背景颜色

SetTextColor(hdc,color)
setBkColor(hdc,color)

文本输出过程

  1. 获取字体信息:GetTextMetrix(hdc,&tm)
  2. 格式化文本:(1)确定后续文本坐标:GetTextExtentPoint()。(2)确定换行时文本坐标:y=y0+tm.tmHeight+tm.tmExternalLeading
  3. 文本输出(1)TextOut()DrawText()//这种输出的字符被一个矩形框着`。

可视化:Windows图形设备接口及绘图相关推荐

  1. Windows的图形设备接口(GDI)入门 上篇

    Windows图形设备接口(GDI)是为与设备无关的图形设计的.所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,使用户编程时无需考虑特殊的硬件设置. 我们利用GDI所提供的众多函数就可以方便的在屏 ...

  2. MFC GDI 图形设备接口函数

    图形设备接口 图形设备接口(Graphics Device Interface) MFC的四种DC 常用函数 库存的GDI对象: RGB和YUV颜色空间 CColorDialog 颜色选择通用对话框 ...

  3. 一款基于 Java 的可视化 HTTP API 接口开发神器

    今天推荐的 5 个项目是: magic-api :一款基于 Java 的可视化 HTTP API 接口开发神器. LanguageTool : 一款基于 Java 语言编写的开源语言校正工具. toB ...

  4. 深圳租房数据可视化分析【Plotly库绘图】

    深圳租房数据可视化分析[plotly库绘图] 一.技术介绍 1.可视化技术支持来源: 2.选择plotly理由: 二.代码实现及分析: 1.导入库及解读数据集: 2.数据清洗与转换 3.统计数据 4. ...

  5. windows编程之GDI绘图 -- 实验3-1

    windows编程之GDI绘图 – 实验3-1 文章目录 windows编程之GDI绘图 -- 实验3-1 @[toc] 1.实验名称 2.实验目的 3.实验的步骤和方法 4.代码实现 5.思考题 6 ...

  6. 【二十二】win 10 :Jmeter 报告可视化 —— 配置 Jmeter 接口 HTML 可视化测试报告,Jenkins + Jmeter + Ant 自动化集成环境搭建

    目录 一.环境搭建 二.文件下载 三.文件配置 四.本地调试 五.创建.bat文件 六.Jenkins配置邮件 七.配置测试项目 八.自动部署成功校检 九.jmeter仪表盘HTML报告自动化构建 一 ...

  7. Windows高级工程师:GDI+绘图;基础入门大全

    Windows GDI绘图基础知识 一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线. 7 个画线函式是: (1)画直线 LineTo    BOOL LineTo(HDC hdc ...

  8. python echarts接口_python绘图pyecharts+pandas的使用详解

    pyecharts介绍 pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒 为避免绘制缺 ...

  9. wxpython可视化_使用wxPython的绘图模块wxPyPlot进行数据可视化

    [Python进阶(四十)-数据可视化の使用matplotlib进行绘图前言  matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.我将在这篇文章中介绍matp ...

最新文章

  1. 请教于国富律师——怎样把灰鸽子病毒和灰鸽子程序区分开
  2. MySQL主从复制故障案例一
  3. transactional replication 的immediate_sync属性
  4. 微软下周将发布重磅安全公告 修复40个漏洞
  5. 【PAT乙】1003 我要通过! (20分) 字符串条件判定
  6. 西岛住宿软件测试,西岛踩坑记:寄存行李居然还要收费!听说要晋升5A,你觉得呢?...
  7. 拼接sql语句参数绑定
  8. 为了躲开违规电动车,我一下子撞电线杆上了
  9. FPGA之SSI接口协议实现
  10. 专业数字功放工作原理以及应用电路介绍
  11. Origin实现中英文版本切换
  12. NRF52840学习历程(十一)幻彩RGB灯之WS2812B
  13. 标准盒子模型简单讲解
  14. 1.2 Unity3D 的注册
  15. android 修改aar包资源文件的最简单方法
  16. A. 贝壳找房性价比
  17. 盘点MES系统物料管理那些事儿
  18. 医学图像处理涉及到的窗宽窗位 1
  19. 论文版「ChatGPT」来了!看论文问问题可同时进行,网友:看文献更省时了|开源...
  20. 字符串插入字符串函数

热门文章

  1. Nvidia RTX20系列显卡安装Ubuntu18.04解决黑屏问题
  2. Kotlin 集合函数锦集,移动应用开发就业方向和前景
  3. 计算机的乘法用英语怎么说,乘法用英语怎么说
  4. CF817C Really Big Numbers
  5. 结对编程,合适的人真的很少,志趣相投的人很少
  6. SpringBoot之异步方法
  7. 洛谷 P1994 有机物燃烧
  8. 《围炉音乐会》与第59届格莱美深度合作
  9. Dolphinscheduler 安装笔记
  10. java课设秒表_Java写的秒表