实践教学屏幕共享技术的研究

2016-03-10 12:28朱利龙
科技视界 2016年25期
关键词:网段多媒体教学图像

朱利龙

(青岛理工大学,山东 临沂 273400)

实践教学屏幕共享技术的研究

朱利龙

(青岛理工大学,山东 临沂 273400)

目前,高校多媒体教学实验室存在难以跨网段演示的困难,即便是能够演示也多需要增加额外的物理设备。通过分析和研究现有的屏幕共享技术和方法,提出了基于GDI+技术采用C#实现的实践教学屏幕共享系统,实现了教学屏幕的跨网段广播,避免了实践教学中不必要的重复性劳动。

屏幕共享;C#;GDI+;垃圾回收

目前,各高校在计算机类课程的实践教学过程中,任课老师通常通过诸多的多媒体教学软件将实践操作演示给学生,例如红蜘蛛多媒体网络教室、极域电子教室、凌波多媒体网络教室等等。这些网络多媒体教学,在单个网段内将教师机屏幕展现给学生比较容易,但是学生机器上必须安装响应学生端软件,否则无法访问。而且在多个网段中演示教师机的操作时,这些系统也无法实现屏幕共享,亦或是需要另行安装相关设备,从而造成系统安装比较复杂。本文将就据此设计相关系统,解决此类问题。

1 系统分析

现在某些公司也提供了专门视频类屏幕共享设备,如实时协作服务器R-HUB。但在实践教学过程中使用这些设备,会增大教学成本较大,而且大材小用造成设备的功能浪费。还有诸多屏幕共享工具NetMeeting和InletexEMC等软件也可以提供屏幕共享和同步操作等功能,但是实践教学过程中,大量并发访问会造成系统当机,经常导致学生端无法正常访问。另外诸如红蜘蛛等多媒体教学系统,教师在演示的过程中,只能让学生看到教师操作,而不能跟着同时操作,存在一定的缺陷和不足。

经分析发现教学屏幕共享,实质上共享的就是通过某种技术将教师机的屏幕传给学生端。因此,本文首先采用基于GDI+技术和JPG图像压缩的方式,以C#程序语言为设计工具,通过循环抓图的方法生成教师机屏幕的图像,然后借助开源Web服务器采用B/S模式传给学生端。这样做,不仅可以实现屏幕共享,而且可以让学生边看边操作,从而加强学生记忆,以免演示过后,学生遗忘操作步骤。

2 系统设计

屏幕图像的抓取采用微软提供的图形设备接口GDI+技术,该技术可以实现操作系统与屏幕绘图之间的资源共享,包括光标和其他程序界面的显示。程序员借助这些资源的上下文句柄HDC,便可以获取教师机的含有光标痕迹的屏幕图像,而无需关心显卡驱动和具体的绘图过程。在C#中,可以通过Graphics类的方法来获取屏幕图像,然后Cursor类的Draw方法将光标绘制在抓取的屏幕图像中。

抓取的屏幕图像默认是位图格式,若直接传输到学生端不但浪费带宽,而且由于循环抓图时间间隔不长,将会导致学生端图像显示卡顿。因此需要对抓取的图像进行压缩。在C#中ImageFormat类的Jpeg属性便可以实现将图像转换为JPG格式。最后通过B/S模式来将屏幕图像传给学生端。

3 系统实现

本系统设计一个名为getScrPic的方法来实现屏幕图像的获取,该函数将返回一个Image对象。该方法首先根据Image对象的Bitmap方法创建屏幕大小的一张位图,采用Graphics类提供的FromImage方法将其转换成Graphics对象,以便该对象的CopyFromScreen方法拷贝教师机的屏幕图像。其部分代码如下:

int ScrW=Screen.PrimaryScreen.WorkingArea.Width;

int ScrH=Screen.PrimaryScreen.WorkingArea.Height;

ScrImg=new Bitmap(ScrW,ScrH);//ScrImg为类的静态属性成员

Graphics ScrG=Graphics.FromImage(ScrImg);

ScrG.CopyFromScreen(new Point(0,0),new Point(0,0),new Size (ScrW,ScrH));

其次,再通过Windows API提供的GetCursorInfo方法获取全局光标的句柄将其转化为,以便用 System.Windows.Forms命名空间中Cursor对象,并进行光标绘制。其部分代码如下:

CURSORINFO ScrPci;

int CurW=ScrCur.Size.Width,CurH=ScrCur.Size.Height;

long x=ScrPci.ptScreenPos.x,y=ScrPci.ptScreenPos.y;

Cursor ScrCur=new Cursor(ScrPci.hCursor);

ScrPci.cbSize=Marshal.SizeOf(typeof(CURSORINFO));

GetCursorInfo(out ScrPci);

ScrCur.Draw(ScrG,new Rectangle(x-10,y-10,CurW,CurH));

最后,设置一个计时器,根据所设间隔时间调用上述定义的getScrPic方法不断截取教师机最新的屏幕图像。在该方法的实现中,由于截图时常占用内存,若不处理好内存资源的回收问题,将会导致内存爆满问题。本文采用Image对象的Dispose方法和GC垃圾回收机制共同来解决这个问题,由图1给出的资源占用情况对比图可以看出本文给出的方法效果不错。其参考代码如下:

getScrPic().Save(path,System.Drawing.Imaging.ImageFormat.Jpeg);

ScrImg.Dispose();//释放图像所占资源

GC.Collect();//强制进行垃圾回收,以便进一步释放系统所占资源

系统设计的最终界面非常简单,如图2所示。其中单机开始按钮将会调用系统计时器timerScr_Tick方法来完成循环截图,并Process对象的Start方法启动开源的Web服务器软件MiniWeb.exe。学生端将访问屏享系统的主页index.html,该网页将会借助JavaScript脚本循环显示教师机截取的图像。

4 总结

本文所设计的系统解决了屏幕共享跨网段的问题,并简化了教学系统的安装过程。不仅改进了实践教学的教学方法和教学手段,帮助老师从繁重的工作中解脱出来,而且提高实践教学的教学质量和学生的学习积极性。

[1]张宗飞.VB中屏幕共享系统的设计与实现[J].计算机系统应用,2008,(4):84-86.

[2]陈剑瓯.javaScript基础教程(第8版)[M].北京:人民邮电出版社,2012年.

[3]钱哨.C#WinForm实践开发教程[M].北京:中国水利水电出版社,2010年.

[责任编辑:朱丽娜]

猜你喜欢
网段多媒体教学图像
改进的LapSRN遥感图像超分辨重建
有趣的图像诗
单位遭遇蠕虫类病毒攻击
网上邻居跨网段访问故障
多媒体教学在语文课堂的有效应用
Onvif双网段开发在视频监控系统中的应用
多媒体教学为高中语文课堂插翅添翼
如何正确认识多媒体教学
应用多媒体教学课件的取与舍
遥感图像几何纠正中GCP选取