Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二章 一个简单的二维光栅图形软件包 ----Windows API简介

Similar presentations


Presentation on theme: "第二章 一个简单的二维光栅图形软件包 ----Windows API简介"— Presentation transcript:

1 第二章 一个简单的二维光栅图形软件包 ----Windows API简介
用图形软件包绘图 基本的交互处理 光栅操作 5/6/2019 淮工计算机系

2 用图形软件包绘图(1/6) 图元的声明 扫描转换 绘图纸,屏幕,坐标系 扫描转换:将转换为点阵表示的图形 顶点(参数) 表示的图形 用户
显示系统 5/6/2019 淮工计算机系

3 用图形软件包绘图(2/6) 点 COLORREF GetPixel( int x, int y ) const
COLORREF SetPixel( int x, int y, COLORREF crColor ); 直线段 CPoint MoveTo( int x, int y ); BOOL LineTo( int x, int y ); 折线 BOOL Polyline( LPPOINT lpPoints, int nCount ); 5/6/2019 淮工计算机系

4 用图形软件包绘图(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) 5/6/2019 淮工计算机系

5 用图形软件包绘图(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/6/2019 淮工计算机系

6 用图形软件包绘图(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 ); 5/6/2019 淮工计算机系

7 用图形软件包绘图(6/6) 保存和恢复图元的属性:提高程序的模块化程度 字符
BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount ); 5/6/2019 淮工计算机系

8 基本的交互处理(1/3) 几条原则 逻辑输入设备 简单一致的交互操作序列 清晰的可选项 不能有过多的选项 反馈 Undo功能
目标:屏蔽物理设备的差异,获得系统的设备无关性 二维定位设备 键盘设备 设备驱动程序完成从物理设备到逻辑设备的映射 解决方法:菜单、按钮、加亮、变灰、光标变化等等 5/6/2019 淮工计算机系

9 基本的交互处理(2/3) 输入方式 取样(轮询)方式 中断驱动方式 事件驱动方式 5/6/2019 淮工计算机系

10 基本的交互处理(3/3) 事件驱动方式 简单的程序结构 初始化; Do{ waitEvent(event); Switch(event) {
Case EVENT1: precedure1; break; Case EVENT2: procedure2; } }while(TRUE); 5/6/2019 淮工计算机系

11 光栅操作 画布(Canvas) 抽象的数据类型,用户可以在其中画图 包括一个像素图和一些控制信息 具有独立的坐标系
系统可以同时有多个画布,只有一个处于激活状态 屏幕是一个特殊的画布 绘图命令的作用对象是处于激活状态的画布 Windows中对应的概念:DC 例子 5/6/2019 淮工计算机系

12 光栅操作 裁剪窗口 为什么裁剪? 内裁剪:保留窗口之内的图形 外裁剪:保留窗口之外的图形
UINT SetBoundsRect( LPCRECT lpRectBounds, UINT flags ); UINT GetBoundsRect( LPRECT lpRectBounds, UINT flags ); 5/6/2019 淮工计算机系

13 光栅操作 位块拷贝 (x,y) (xSrs,ySrc) BitBlt(Bit Block Transfer)
BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ); (x,y) (xSrs,ySrc) 5/6/2019 淮工计算机系

14 光栅操作 显示模式 为什么有显示模式? 4中简单的显示模式 覆盖/Replace 或/Or 异或/Xor 与/And 5/6/2019
淮工计算机系

15 光栅操作 Windows中的显示模式 int GetROP2( ) const; int SetROP2( int nDrawMode );
R2_BLACK   R2_WHITE  R2_NOP   R2_NOT    R2_COPYPEN  R2_NOTCOPYPEN    R2_MERGEPENNOT  R2_MASKPENNOT  R2_MERGENOTPEN  R2_MASKNOTPEN    R2_MERGEPEN    R2_NOTMERGEPEN    R2_MASKPEN    R2_NOTMASKPEN   R2_XORPEN  R2_NOTXORPEN 5/6/2019 淮工计算机系

16 光栅操作 11001001 Xor 11111111 ------------------- 00110110 异或的用途:光标的显示
5/6/2019 淮工计算机系


Download ppt "第二章 一个简单的二维光栅图形软件包 ----Windows API简介"

Similar presentations


Ads by Google