




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图形操作简介,必要的头文件 必须的系统变量 初始化图形界面 初始化出错处理 取得必须的信息 关闭图形界面 一些常用的画图函数,必要的头文件,#include #include #include #include #include ,必须的变量,int GraphDriver; int GraphMode; double AspectRatio; int MaxX, MaxY; int MaxColors; int ErrorCode; struct palettetype palette;,初始化图形界面,GraphDriver = DETECT; initgraph(,初始化出错处理,ErrorCode = graphresult(); if( ErrorCode != grOk ) printf(“ Graphics System Error: %sn“, grapherrormsg( ErrorCode ) ); exit( 1 ); ,取得必须的参数,getpalette( ,关闭图形界面,closegraph(); /* Return the system to text mode */,一些常用的画图函数,outtext( buffer ),outtextxy(x,y,buffer) line(x0,y0,x1,y1);linerel( );lineto( ) circle(int x, int y, int radius); arc( ) bar(int l, int t, int r, int b); bar3d( ); moveto(int x, int y);moverel(dx,dy);getx( ) putpixel(x,y,color); getpixel(x,y) setcolor();setbkcolor();getcolor();getbkcolor,鼠标操作,鼠标简介 鼠标驱动程序的主要功能 鼠标功能调用方法 鼠标的初始化 鼠标光标的显示与隐藏 读取按钮状态,读取或设置光标位置 设置鼠标的光标形状和移动范围,鼠标简介,鼠标系统实际上由两个主要元素组成:鼠标机制和称作鼠标驱动程序的内存驻留程序。鼠标驱动程序提供与鼠标通信所需的全部低级支持。此外,它自动维持鼠标光标位置和发现是否按下了某个键。一旦装入驱动程序,鼠标就可以被随后执行的任意程序使用。,鼠标简介,可以通过PC中断33H访问鼠标和鼠标驱动程序的各种功能。所选择的特定函数依赖于中断时AX寄存器的值。三个其它寄存器(BX、CX和DX)用于把各种参数传送给鼠标例程。同样,鼠标函数使用这四个寄存器把鼠标的位置和按钮的状态返回给调用函数。,鼠标驱动程序主要功能,鼠标驱动程序主要功能,鼠标功能调用方法,用TC通过INT33H中断来编制基本函数,有三种常用方法: 嵌入汇编程序,如:ASM CLI清中断 利用全程变量赋予寄存器值,然后通过函数geninterrupt( )调用中断实现 利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在dos.h,鼠标的初始化,InitMouse() union REGS regs; regs.x.ax=0; int86(0x33,鼠标光标的隐藏,HideCur() union REGS regs; if(visual) regs.x.ax=2; int86(0x33, ,鼠标光标的显示,ShowCur() union REGS regs; if(!visual) regs.x.ax=1; int86(0x33, ,鼠标光标的显示与隐藏,在鼠标驱动程序中,鼠标的显示状态用0值表示,隐藏用负值表示,每调用一次显示功能则该值加一,每调用一次隐藏功能,则该值减一。这样,在多次调用了驱动程序的隐藏鼠标光标功能后,再调用显示鼠标光标功能时,将不能正常显示鼠标光标。需要加入一个visual布尔型变量,来取代驱动程序中的数值。,读取鼠标的状态,Status( ) union REGS regs; regs.x.ax=3; int86(0x33, ,读取鼠标的状态,其中X,Y为光标位置 status&1左键状态,1为按下,0为未按 status&2右键状态,1为按下,0为未按 status&4中键状态,1为按下,0为未按 要注意循环检测时的抖动现象,可增加一些空循环或延时来清除剩余的按键信号。,设置光标位置,void MoveMouse(int x,int y) REGS regs; regs.x.ax=4; regs.x.cx=x; regs.x.dx=y; int86(0x33, ,设置鼠标光标形状,设置鼠标光标需要三个方面信息: 鼠标的外边界:8*8点阵,16个整数 鼠标的内部形状:8*8点阵,16个整数 以及鼠标的热点的相对坐标:int x,y 其中外边界和内边界连续存放,为长度为32的整型数组 int marks32,设置鼠标光标形状,SetCurs(unsigned masks32,x,y) union REGS regs; struct SREGS sregs; regs.x.ax=9; regs.x.bx=x; regs.x.cx=y;/* hot spot*/ regs.x.dx=(unsigned)masks; segread( ,手的光标数据,0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, /*cursor mask*/ 0x0c00, 0x1200, 0x1200, 0x1200, 0x13fe, 0x1249, 0x1249, 0x1249, 0x7249, 0x9001, 0x9001, 0x9001, 0x8001, 0x8001, 0x4002, 0x3ffc /*cursor mask*/ 4,0 /*hot spot*/,设置鼠标的移动范围,SetMouseArea(int x0,int y0,int x1,int y1) union REGS regs; regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33, ,西文状态下汉字的显示,汉字库简介 取得字节的某一位 显示24点阵汉字 显示16点阵汉字 在字库中取字模,汉字库简介,程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。 HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个汉字字模32BYTE,按照国标码顺序存储,其中也包含了682个纯中文符号字母。,汉字库的情况,ASC16存储256个西文ASCII码的8*16点阵格式,按行存储,每个ASCII码16字节。 HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所以从16区1位“啊”字开始存储,以减少字库大小。其中X为KS表示楷体,宋体等。,取得字节某一位的值,int getbit(unsigned char byte,int bit) if(bit7) return 0; return (bytebit) 函数getbit用于得出一个字节中每个位(bit)是0还是1。,显示24点阵的汉字,void PutChn24(x,y,char *by,color) int i1,i2,i3; for(i1=0;i124;i1+) /LINES for(i2=0;i23;i2+) /3 bytes per line for(i3=0;i38;i3+) f(getbit(byi1*3+i2,7-i3) putpixel(x+i1,y+(i2*8+i3),color);,显示16点阵的汉字,void PutChn16(x,y,char* buf,color) int i1,i2,i3; for(i1=0;i116;i1+) for(i2=0;i22;i2+) for(i3=0;i38;i3+) if(getbit(bufi1*2+i2,7-i3) putpixel(x+i2*8+i3,y+i1,color);,在字库中找字模,qu= c1 - 0xa1; wei= c2 - 0xa1; 通过计算个计算出该区位码在汉字库中的偏移量:lenth = 32 long offset=(qu) * 94 + wei) * (long) lenth; 24*24点阵汉字字模的读取类似,只是其偏移量计算稍有不同:lenth=72 long offset=(qu-15)* 94+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年下学期高一生物沪科版期末必刷常考题之基因突变是生物变异的根本来源
- 点、直线和平面的投影
- 2024-2025学年浙江省杭州市部分重点中学高二下学期开学检测语文试题(解析版)
- 2025年秋三年级上册语文同步教案 口语交际:身边的“小事”
- 学校德育工作心得体会
- 高一升高二(英语)
- 治疗室换药室消毒管理制度讲课件
- 驾驶员(司机培训)培训课程课件
- 作为公司内控管理制度
- 供应扬尘设备管理制度
- 浙江嘉兴市小学英语四年级下学期期末测试卷测试题(含答案)
- 信息化项目网络设备、网络安全设备、服务器和存储系统集成项目培训方案
- 汉语语法教学-是……的
- 2009-2022历年河北省公安厅高速交警总队招聘考试真题含答案2022-2023上岸必备带详解版4
- 无犯罪记录无吸毒史证明模板
- 六年级信息技术下册《走进人工智能》优质课获奖课件
- 第18课 现代设计与现代媒体-高中美术鲁美版美术鉴赏
- 国际商务毕业论文范文
- GB∕T 37456-2019 海洋平台电驱动齿轮齿条升降装置
- 营运车辆智能视频监控系统管理制度范本及动态监控管理制度
- DB34∕T 3587-2020 城镇排水管道检测与修复技术规程
评论
0/150
提交评论