文档介绍:第二章一个简单的二维光栅图形软件包----Windows API简介
用图形软件包绘图
基本的交互处理
光栅操作
1
用图形软件包绘图(1/6)
图元的声明
绘图纸,屏幕,坐标系
扫描转换:将转换为点阵表示的图形
扫描转换
顶点(参数)
表示的图形
用户
点阵表示
的图形
显示系统
2
用图形软件包绘图(2/6)
点
COLORREF GetPixel( int x, int y ) const
COLORREF SetPixel( int x, int y, COLORREF crColor );
直线段
CPoint MoveTo( int x, int y );
BOOL o( int x, int y );
折线
BOOL Polyline( LPPOINT lpPoints, int nCount );
3
用图形软件包绘图(3/6)
圆弧
BOOL AngleArc( int x, int y, int nRadius, float fStartAngle, float fSweepAngle );
椭圆弧
BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
(x3,y3)
(x4,y4)
4
用图形软件包绘图(4/6)
图元的属性
线型、线宽
CPen ( int nPenStyle, int nWidth, COLORREF crColor );
BOOL CreatePen (int nPenStyle,int nWidth,
COLORREF crColor);
颜色
三种指定颜色的方式
通过查色表索引值
通过颜色名称
通过红、绿、兰三分量
COLORREF GetBkColor( ) const;
COLORREF SetBkColor( COLORREF crColor );
COLORREF GetTextColor( ) const;
COLORREF SetTextColor( COLORREF crColor );
5
用图形软件包绘图(5/6)
填充图元及其属性
椭圆
BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 );
多边形
BOOL Polygon( LPPOINT lpPoints, int nCount );
矩形
BOOL Rectangle( int x1, int y1, int x2, int y2 );
填充模式
均匀填色
BOOL CreateSolidBrush( COLORREF crColor );
以图像填充
BOOL CreatePatternBrush( CBitmap* pBitmap );
6
用图形软件包绘图(6/6)
保存和恢复图元的属性:提高程序的模块化程度
字符
BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );
7
基本的交互处理(1/3)
几条原则
简单一致的交互操作序列
清晰的可选项
不能有过多的选项
反馈
Undo功能
逻辑输入设备
目标:屏蔽物理设备的差异,获得系统的设备无关性
二维定位设备
键盘设备
设备驱动程序完成从物理设备到逻辑设备的映射
解决方法:菜单、按钮、加亮、变灰、光标变化等等
8
基本的交互处理(2/3)
输入方式
取样(轮询)方式
中断驱动方式
事件驱动方式
9
基本的交互处理(3/3)
事件驱动方式
简单的程序结构
初始化;
Do{
waitEvent(event);
Switch(event)
{
Case EVENT1: precedure1;
break;
Case EVENT2: procedure2;
break;
…
}
}while(TRUE);
10