Chinaunix首页 | 论坛 | 博客
  • 博客访问: 263291
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-16 13:07
个人简介

我喜欢蓝天,也喜欢雨天。

文章分类

全部博文(71)

文章存档

2014年(14)

2013年(57)

分类: Windows平台

2013-08-16 15:11:51

1.GDI图元

直线和曲线

填充区域

位图

文本

2.获取设备描述表句柄的另一更通用方法:

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

DeleteDC(hdc);

hdc = CreateDC(TEXT("DISPLAY",NULL,NULL,NULL));

3.一个设备描述表通常指一个物理显示设备,如视频显示器和打印机.获取有关设备的信息,如显示器的显示尺寸和色彩范围,用下面的函数:

IValue = GetDeviceCaps(hdc,iIndex); HORZRES宽度(像素);VERTRES 高度;

4.分辨率:

一英寸的像素数。

5.小字体:要windows假定视频显示分辨率为每英寸96点;

大字体:要windows假定视频显示分辨率为每英寸120点;

6.写像素:SetPixel(hdc,x,y,crColor);

crColor = GetPixel(hdc,x,y);得到指定坐标的像素颜色。

7.还有一些画直线、椭圆的函数

8.获取画笔句柄:hPen = GetStockObject(WHITE_PEN);

将画笔选进设备描述表:SelectObject(hdc,hPen);  合为一句话:SelectObject(hdc,GetStockObject(WHITE_PEN)); 返回值是调用前设备描述表中的画笔句柄.

创建画笔:hPen = CreatePen(iPenStyle, iWidth,crColor);

CreatePenIndirect(&logpen);

9.创建画刷:hBrush = CreateSolidBrush(crColor);

创建影线画刷:hBrush = CreateHatchBrush(iHatchStyle,crColor);

另一个:hBrush = CreateBrushIndirect(&logbush);

SelectObject(hdc,hBrush);

DeleteObject(hBrush);

10.映射方式: 逻辑单位转换为设备单位,即像素的方式.

设置映射方式:SetMapMode(hdc,iMapMode);

获取:iMapMode = SetMapMode(hdc);

11.视口是基于设备坐标;

窗口是基于逻辑坐标。

6.设备描述表:

设备描述表句柄是GDI函数的窗口“密码”,有了这种设备描述表句柄,程序员就能自如的在客户区上绘图,使图形如自己所愿的变得好看或者难看。设备描述表实际是GDI内部保存的数据结构。

DC是个数据结构。而HWND是一个32BIT的值。就好比你进个房间。则这个房间的属性已经确定(包括门窗的大小等) 这个HWND就相当与房间号码。而DC相当与房间的属性。你要改门窗的颜色。一定要先得到房间号(HWND)。然后根据它得到房间属性(HDC)。得到后你想干啥就干啥啊。

窗口句柄:通过窗口句柄可以接收到对窗口的移动、最大化、最小化、关闭等消息;

设备描述表句柄:要对这个窗口进行绘制,就要得到设备描述表句柄,这样才能对它绘制。

7.设备坐标和逻辑坐标

GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。

<1>逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。

<2>设备坐标系是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。设备坐标系的原点位置(0, 0)不限定在设备显示区域的左上角。

设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系三种相互独立的坐标。

当Windows应用程序在其客户区绘制图形时,必须给出在客户区的位置,其位置用x和y 两个坐标表示,x表示横坐标,y表示纵坐标。在所有的GDI绘制函数中,这些坐标使用的是一种"逻辑单位"。当GDI函数将输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点)。

逻辑坐标和设备坐标的转换是由映射模式决定的。

映射模式被储存在设备环境中。

8.GetMapMode函数用于从设备环境得到当前的映射模式,

SetMapMode函数用于设置设备环境的映射模式。

9.为什么会分设备坐标和逻辑坐标???逻辑坐标都一样,方便管理。如从设备1上得到一个设备坐标,转化为逻辑坐标,然后把这个逻辑坐标按另一种转化关系,转化为设备2的设备坐标。

阅读(882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~