windows程序设计_第5章_绘图基础——学习笔记

一、概要

       GDI 是WINDOWS极其重要的一部分,从程序员的角度来说,GDI由几百个函数以及相关的一些数据类型、宏和结构组成。GDI的一个主要目的是支持与设备无关的图形。

二、GDI的结构

1、GDI的函数分类

1) 获取(或建立)和释放(或销毁)设备环境的函数:BeginPaint\EndPaint\GetDc\ReleaseDc……

2) 获取设备环境信息的函数:GetTextMetrics……

3) 绘制函数:TextOut……

4) 设置和获取设置环境属性的函数:SetTextColor\SetTextAlign……

5) 使用GDI对象的函数:CreatPen\CreatePenIndirect\ExtCreatePen…….

2、GDI的基本图形

1) 线条和曲线

2) 可被填充的封闭区域

3) 位图

4) 文本

三、设备环境

       希望在图形输出设备上绘制图形,必须首先获得设备环境的句柄,当windows把这个句柄交给你的程序,windows也就给予你使用这个句柄的权限。

1、获取设备环境句柄

1)hdc = BeginPaint(hwnd, &ps);

   ……

   EndPaint(hwnd, &ps);

 

 

      

 

 

2) hdc = GetDC(hwnd);

……

ReleaseDC(hwnd, hdc);

 

 

3)hdc = GetWindowDC(hwnd);

……

ReleaseDC(hwnd, hdc);

 

 

4)hdc = CreateDC(pszDriver, pszDevice, pszOutput, pData);

……

 DeleteDC(hdc);

 

2、获取设备环境的信息

函数:GetDevicecaps(hdc, iIndex);

3、设备尺寸

像素尺寸(像素规模):设备在水平或垂直方向上显示的总的像素数。

度量尺寸(度量规模):以英寸或者毫米为单位的设备的客户区域的大小。

分辨率= 像素尺寸 /度量尺寸,即每度量单位中含有的像素

正方形像素:设备的水平分辨率等于垂直分辨率。

函数:GetSystemMetrics函数,GetDeviceCaps函数

4、色彩ABC

   真彩:每个像素24位,8位红,8位绿,8位蓝

高彩:每像素16位,5位红,6位绿,5位蓝

COLORREF:32位无符号长整型,表示一种特定的颜色。

GetRValue\ GetGValue\ GetBValue从COLORREF值中提取RGB的原色值。

5、保存设备环境

函数:SaveDC

四、点和线的绘制

1、设定像素

SetPixel(hdc, x, y, crcolor):将坐标为x,y的像素点设定为某个特定的颜色。

GetPixel(hdc, x, y):返回指定坐标位置的像素的颜色。

2、画图形

   函数

功能

LineTo

画直线

PolyLine\PolylineTo

画一条由多条首尾相连的直线构成的折线

PolyPolyline

画多条折线

Arc

画椭圆弧线

PolyBezier\PolyBezierTo

画贝塞尔样条曲线

Rectangle

画矩形

Ellipse

画椭圆

RoundRect

画圆角矩形

Pie

画椭圆的一部分,使其看起来像一个扇形

Chord

画出由弦割出的部分椭圆,形状呈弓形

3、GDI对象

一个程序可以创建6种GDI对象:画笔、画刷、位图、区域、字体、调色板

使用GDI对象的三条规则:

1)  最终应删除你所创建的所有GDI对象

2)  当GDI对象被选入一个有效的设备环境时,不要删除它

3)  不要删除备用对象

4、画笔

1)使用现有画笔

Hpen =GetStockObject(WHITE_PEN)   :获取画笔的句柄

SelectObject(hdc,hPen)               :将画笔选入设备环境

2)创建画笔

CreatePen\CreatePenIndirect

3)选择画笔

SelectObject

4)删除画笔

DeleteObject

5、填充空隙

1、Polygon函数和多边形填充模式

2、用画刷填充内部

6、GDI映射模式

1)与映射模式相关的设备环境属性:窗口原点、视口原点、窗口范围、视口范围

2)设备坐标、逻辑坐标

3)设备坐标系统:屏幕坐标、全窗口坐标、客户区坐标

五、矩形、区域、剪裁

1、处理矩形

函数

功能

FillRect

使用指定画刷填充矩形

FrameRect

使用画刷绘制矩形,但不填充

InvertRect

翻转矩形内的所有像素

2、GetMessage和PeekMassage

3、建立和绘制区域

函数

功能

CreateRectRgn

绘制矩形区域

CreateRectRgnIndirect

CreateEllipticRgn

绘制椭圆区域

CreateEllipticRgnIndirect

4、矩形与区域的剪裁

函数

功能

InvalidateRgn

使区域无效

ValidateRgn

使区域有效

SelectObject

将一个区域选入设备环境来创建自己的剪裁区域

SelectClipRgn


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值