采用虚拟屏幕技术清除整个屏幕就是快,如何将将画线函数也改用本方法实现呢?
<P>采用如下方法清除800X600X256屏幕为黑色太快了,比用PutPixel直接写屏方式快多了,而且没有闪烁感,如何将将画线函数也改用本方法实现呢?<BR><BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>// 快速清除屏幕子程序<BR>// 由于分辨率为800*600*256色(8位深度),因此共需800*600/65535=8页=512K<BR>/////////////////////////////////////////////////////////////////////////////////////////////////<BR>void _Cdecl GuiQuickClsScreen(int color)<BR>{<BR> unsigned int i,j;<BR> unsigned char VDCBuf[800];<BR> unsigned int dest_off = 0;</P><P> memset(VDCBuf,color,800);<BR> for (j = 0 ; j < 8 ; j++) // 页号(共需8页)<BR> {<BR> set_vbe_page(j); // 依次选择页号0-页号7<BR> dest_off = 0; // 偏移<BR> for (i = 0 ; i < 81 ; i++) // 由于显卡每页65535,因此先送64800个像素<BR> {<BR> movedata(FP_SEG(VDCBuf),FP_OFF(VDCBuf),0xa000,dest_off,800);<BR> dest_off += 800; // 指向下一根扫描线<BR> } <BR> movedata(FP_SEG(VDCBuf),FP_OFF(VDCBuf),0xa000,dest_off,735);<BR> // 将每页余下的735个像素单独送<BR> }<BR>}</P>
页:
[1]
