基于Visual Basic 6.0的DirectDraw编程(3)
2008-04-09 04:43:28来源:互联网 阅读 ()
ddsd2.lWidth = ddsd3.lWidth
ddsd2.lHeight = ddsd3.lHeight
Set picturesurf = dd.CreateSurfaceFromFile("c:\Waterskier.bmp", ddsd2)
'离屏表面以全屏幕的尺寸来装载图像;
binit = True
brunning = True
Do While brunning
blt
DoEvents
Loop
errOut:
'显示出现错误的情况下恢复系统的正常显示模式;
Call dd.RestoreDisplayMode
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL)
End
End Sub
//////////////////////////////////////////
Private Sub Form_Paint() '窗口重画函数;
blt
End Sub
///////////////////////////////////////////////////////
Sub blt() '"画图"函数;
On Local Error GoTo errOut
If binit = False Then Exit Sub
Dim rPicture As RECT, rback As RECT
rPicture.Bottom = ddsd2.lHeight
rPicture.Right = ddsd2.lWidth
rback.Bottom = ddsd3.lHeight
rback.Right = ddsd3.lWidth
Call backsurf.BltFast(0, 0, picturesurf, rPicture, DDBLTFAST_WAIT)
'在表面上书写文字;
Call backsurf.DrawText(20, 20, "DirectDarw 编程示范", False)
Call backsurf.DrawText(20, 40, "单击鼠标后退出!", False)
primarysruf.Flip Nothing, DDFLIP_WAIT
errOut:
Call dd.RestoreDisplayMode
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL)
End Sub
/////////////////////////////////////////////
Private Sub Form_Click() '单击鼠标后程序结束程序运行;
Call dd.RestoreDisplayMode
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL)
End
End Sub
上面的程序虽然比较简单,但是它包含了DirectDraw的基本应用。首先通过DirectX7的DirectDrawCreate方法建立一个DirectDraw对象,然后通过调用DirectDraw对象的SetCooperativeLevel
方法将程序设置为独占、全屏的模式,SetDisplayMode方法设置系统的显示模式。
接下来是设置绘图平面,DDSURFACEDESC2结构的dwFlags成员用来决定DDSURFACEDESC2结构中哪些成员将被填充有效的信息,例如程序中在创建主表面时,将DDSURFACEDESC2结构的lFlags设为想要用DDSCAPS结构(DDSD_CAPS)和想创建后备表面(back
buffer)(DDSD_BACKBUFFERCOUNT),ddCaps成员在例子中标示一个将要在DDSCAPS结构中使用的标志位,程序中指定了一个主表面(DDSCAPS_PRIMARYSURFACE)、一个交换页(DDSCAPS_FLIP)、一个合成表面(DDSCAPS_COMPLEX);DDSURFACEDESC2结构中lBacksurfCount成员为"1"说明当前要在主表面下建立一个后备表面。
创建主表面后,程序通过调用主表面的GetAttachedSurface方法获取了后备表面。获取了表面对象后,调用表面对象的SetForeColor、
DrawText等方法就可以在相应的表面上添加特定效果的文本了。至于程序中绘制图像我就不多解释了,读者可以仔细阅读上面的代码,其实说白了,DirectDraw显示图像时无非就是在不同表面之间Blt图像数据罢了。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
