您现在的位置: 范文先生网 >> 理工论文 >> 计算机论文 >> 正文

用备课系统开发远程教育课件

时间:2007-1-30栏目:计算机论文

多数浏览器都不支持这种格式的图片文件,因此需要将其转换成通用的图片格式,例如:BMP、GIF、JPG等等,但是在Microsoft
Windows的软件开发手册中没有对METAFILE进行说明,因此无法对起进行直接的转换,但是在Microsoft Windows的软件开发包(SDK)(software
develop kid)中有两个函数"GetMetaFile"和"PlayMetaFile",这两个函数可以将一个METAFILE格式的图片直接显示在屏幕上,这样就为格式的转换提供了方便,方法是:首先将以ASCII字符形式存放在RTF中的METAFILE文件变成以16进制数形式存放的独立的文件保存在磁盘的一个临时文件中,然后用"GetMetaFile"和"PlayMetaFile"将其显示在屏幕上(这里的屏幕实际上是一个虚拟的屏幕,即在内存中建立一个假的屏幕数据结构--Memory
DC,里面有虚拟的显示内存,因此在实际的屏幕上看不见图片的显示)

。然后用抓图的方法就可以将图片的像素取出来并将其保存成BITMAP图片格式文件了。再通过一些通用的图形转换程序就可以将其保存成容量比较小的GIF或JPG格式了。(具体程序如附录1)
下面具体介绍一下从RTF转换成HTML的流程,流程图如图2:

图2
转换的流程其实也是很简单的,就是搜寻命令字的前导符"\",然后对其后面的命令进行相应的处理,要注意的是大括号的匹配,因为这会直接影响到命令的作用域问题,一般在进入一个命令的处理程序后,如果发现有左大括号存在,则这个命令会一直起作用,直到有相应的右括号与其相匹配为止,如果有大括号的嵌套,则命令将一直起作用到所有的左大括号都有相应的右大括号与其匹配为止(正文中的大括号用"\{"、"\}"来表示)。
有了RTF到HTML的转换器,备课系统可以说已经完成了一半了(图3所示就是图1的RTF文档转成的html后的效果)。
图3

四、课件框架生成器
为了老师上课的方便,单单将一个文档变成网叶是不够的,老师讲课是根据一定的层次、一定的顺序来讲课的,所以还要增加一个课件框架生成器,这里利用了一个控件"Treeview",这个控件可以显示一个树形的数据结构,利用每个节点带有的属性(key表示接点的ID;tag表示节点所连接的网页路径;text表示节点的名称)就可以树的形式显示一个课件的层次关系了。(如图4)

图4
这个树的结构可以存盘,以便下次老师修改。另外还可以通过javascript将其在网页上显示出来,具体的做法是:首先编写一段javascript程序(如附录2)用来把一个数组在网页上显示成树结构形式,其中数组的部分用一个标识符号标记,当每次要生成课件框架的时候先将数形数据结构以数组的形式存放,然后将数组信息替换掉这个标识符号,这样在网页上看到的就是Treeview控件中的数形结构。(图5就是图4的树结构在ie上显示的结果)

图5
为了老师使用的方便,系统还提供了超连接、资源管理器、java小程序连接和声音图象连接等功能。这样就形成了一套足够老师日常备课所使用的备课系统。另外,系统还提供了课件的上载功能,只要老师按要求设置好服务器,以后增加或修改课件是非常方便的。但由于我们的着眼点是面向老师使用的系统而不是给一些专业人士使用的,为了使老师更加方便的使用本系统,系统将一些复杂的操作尽量简化,这样做带来的结果是功能不能与"fontpage"等专业软件相提并论论,可是本系统也有自己的特点是"fontpage"没有的,例如"课件框架生成器"。另外,word里面也有将RTF另存为html的功能,但是起转换器经常将不能将图片完全转换出来。而且老师要用word来制作一个完整的课件需要许多工具的配合,给一些对电脑不太熟悉的老师带来了很大的麻烦。本系统为老师提供了完整的制作课件的环境,从最初的制作到最后的发布到网上,都有支持,因此与其他的一些系统相比,有其独特的地方。当然本系统也还有许多不足之处,例如对表格的转换,由于RTF文档中的命令随着要求的不断提高而改变,特别是表格的处理命令每个版本的RTF都有修改,因此很难对表格进行支持,所以需要老师将表格转换成图片才能显示表格。




附录1 将metafile转换成bitmap的程序段
int WmfToBmp(int width,int height,char *metafile,char *targetBmp)
{
HMETAFILE hmf;
OFSTRUCT of;
int fh;
HDC hMemDC,hDisplayDC;
HBITMAP hbmp,hold;
BITMAPFILEHEADER hdr;
LPBITMAPINFOHEADER lpbmpih;
HGLOBAL hg;
unsigned int j;
char FileBuffer[640*480];

hmf=::GetMetaFile(metafile);
hDisplayDC=CreateDC("DISPLAY",NULL,NULL,NULL);
hMemDC=::CreateCompatibleDC(hDisplayDC);
hbmp=::CreateCompatibleBitmap(hDisplayDC,width,height);
hold=(HBITMAP)::SelectObject(hMemDC,hbmp);
PatB

上一页  [1] [2] [3] [4] [5] 下一页

下页更精彩:1 2 3 4 下一页