简单图形库介绍
图形坐标系、像素 3 : 。。 . ······|········· 0。。。 ●●。 ●●。。。。 ······→…··········· 。 ●。●。·。 。● ·····················⊙·· ●。 ··.···········● e。。。。。 .·····.······ ······················ ●。 。。。 。 ●·················· 0
第三方图形库 ■C语言本身不提供图形绘制功能。 借助于第三方提供的图形库,可实现图形的绘 制。 图形库以C原码形式,或者以二进制目标码形式提 供 在应用第三方图形库时,不需要了解其具体的实现, 只需了解其基本功能和图形绘制流程。 直接调用相关图形库函数来实现具体的图形绘 制。 注意:图形库接口头文件应当被包含到源文件中 头文件包含了相关图形库函数的原型
C语言本身不提供图形绘制功能。 借助于第三方提供的图形库,可实现图形的绘 制。 ▪ 图形库以C原码形式,或者以二进制目标码形式提 供。 ▪ 在应用第三方图形库时,不需要了解其具体的实现, 只需了解其基本功能和图形绘制流程。 直接调用相关图形库函数来实现具体的图形绘 制。 ▪ 注意:图形库接口头文件应当被包含到源文件中。 ▪ 头文件包含了相关图形库函数的原型
基本图形函数 Init Graphics Initializes the graphics package, open the window for renderin MovePen(, y) Moves the pen to an absolute position Draws a line from current position to a relative DrawLine(dx, dy) coordinates DrawArc(r, start, sweep) Draws an arc specified by a radius and two angles GetWindow Width Returns the width of the graphics window GetWindowHeightO Returns the height of the graphics window GetcurrentXO Returns the current x-coordinate of the pen GetcurrentYo Returns the current y-coordinate of the pen
InitGraphics() Initializes the graphics package, open the window for rendering MovePen(x, y) Moves the pen to an absolute position DrawLine(dx, dy) Draws a line from current position to a relative coordinates DrawArc(r, start, sweep) Draws an arc specified by a radius and two angles GetWindowWidth() Returns the width of the graphics window GetWindowHeight() Returns the height of the graphics window GetCurrentX() Returns the current x-coordinate of the pen GetCurrentY() Returns the current y-coordinate of the pen
初始化 本课程采用的第三方图形库是基于 windows系 统的Win32AP 在Win3AP中,第一个C函数是 Win main(),而不 是 main),且要遵循 Windows编程规范—一这 需要花很多时间去学习 为了方面初学者使用,在第三方图形库中,已 实现了通用的 Win maing)基本功能 应用程序所要做的相关初始化工作只需写在Main( 函数中即可 在Main函数中,首先要调用 I Init Graphic50来初始化 图形窗口,以便绘制图形
本课程采用的第三方图形库是基于windows系 统的Win32API. 在Win32API中, 第一个C函数是WinMain(), 而不 是 main(),且要遵循windows编程规范——这 需要花很多时间去学习. 为了方面初学者使用,在第三方图形库中,已 实现了通用的WinMain()基本功能 ▪ 应用程序所要做的相关初始化工作只需写在Main() 函数中即可. ▪ 在Main()函数中,首先要调用InitGraphics()来初始化 图形窗口,以便绘制图形
画笔 可以想象在图形窗口里有一只虚拟的画笔 存在 设定画笔的位置(坐标): MovePen(x, y) 坐标X和y是图形窗口的绝对坐标(单位:英寸) MoveMen(xy)将把画笔移到(Xy)—一画笔当 前位置 ■接下来的图形绘制都是从该位置开始的 ■有的绘图函数可以更改画笔当前位置
可以想象在图形窗口里有一只虚拟的画笔 存在. 设定画笔的位置(坐标): ▪ MovePen(x, y); ▪ 坐标x和y是图形窗口的绝对坐标(单位:英寸) MovePen(x, y)将把画笔移到(x,y)——画笔当 前位置. 接下来的图形绘制都是从该位置开始的. 有的绘图函数可以更改画笔当前位置
直线 画直线函数: Drawline(dx,dy) 其中,dx和dy是相对于画笔当前位置的偏移量 假设画笔当前位置是(X,y),它从(Xy)到(X+dx y+dy)画一条直线 画完直线后,画笔当前位置移到(x+d×,y+d 画一个矩形 MoveMen(0.5, 0.5) DrawLine(0.0, 1.0); DrawLine(1.0,0.0); Drawline(0.0, -1.0) DrawLine(-1.0,0.0);
画直线函数:DrawLine(dx, dy) ▪ 其中,dx和dy是相对于画笔当前位置的偏移量 ▪ 假设画笔当前位置是(x, y),它从(x, y)到(x+dx, y+dy) 画一条直线。 ▪ 画完直线后,画笔当前位置移到(x+dx, y+dy) 画一个矩形: MovePen(0.5, 0.5); DrawLine(0.0, 1.0); DrawLine(1.0,0.0); DrawLine(0.0,-1.0); DrawLine(-1.0,0.0);
圆与圆孤 DraWArc(r, start, sWeep 以画笔当前位置作为圆弧所在圆的Ⅹ轴上右 起点,画一段圆弧 圆孤的半径为r,起始角度为 start(单位:度, 相对于Ⅹ轴方向逆时针为正),弧度为 sweep
DrawArc(r, start, sweep) 以画笔当前位置作为圆弧所在圆的X轴上右 起点,画一段圆弧. 圆弧的半径为r, 起始角度为start(单位:度, 相对于X轴方向逆时针为正), 弧度为sweep
文本 ■常用的 printf用于标准输出(控制台窗口) 输出格式化数据,不能用于在图形窗口输 出文本 ■图形模式下输出文本的函数 Draw TextString(char *string 从当前位置开始输出文本(字符串) string string是字符串指针
常用的printf用于标准输出(控制台窗口) 输出格式化数据,不能用于在图形窗口输 出文本。 图形模式下输出文本的函数 DrawTextString(char *string) ▪ 从当前位置开始输出文本(字符串)string ▪ string 是字符串指针
sprintf Draw Textstring)函数只能输出文本(字符 串),不能直接输出格式化数据。 ■函数 sprint(0可将格式化数据输出到一个缓 冲区中,形成一个字符串: int sprintf( char str, const char format, .. printf的用法同 printf0( printi将结果输出到标准输出 sprintf,则输出到字符串(用户指定的str)
DrawTextString()函数只能输出文本(字符 串),不能直接输出格式化数据。 函数sprintf()可将格式化数据输出到一个缓 冲区中,形成一个字符串: ▪ int sprintf ( char * str, const char * format, ... ) ▪ sprintf()的用法同printf(): ▪ printf将结果输出到标准输出 ▪ sprintf则输出到字符串(用户指定的str)