可视化:Windows图形设备接口及绘图

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()//这种输出的字符被一个矩形框着`。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值