|
DirectX 7 编程初步(4) With Picture1 '获得与主显示平面兼容的图形设备句柄 hdcSrc = DDSFront.GetDC '保存图像 Set .Picture = SaveTohBmp(hdcSrc, 0, 0, 640, 480) '释放图形句柄 DDSFront.ReleaseDC hdcSrc SavePicture Picture1, "c:\a.bmp" End With End If End Sub
Public Sub Form_Paint() BlitRect.Right = DDSBackDesc.lWidth BlitRect.Bottom = DDSBackDesc.lHeight DDSFront.Blt BlitRect, DDSBack, BlitRect, DDBLT_WAIT End Sub
在工程文件中加入一个Module文件,这个文件中DirectDraw操作做出了定义,在这个Module中加入以下代码:
Option Explicit Public DX As New DirectX7 Public Ddraw As DirectDraw7 Public DDSFront As DirectDrawSurface7 Public DDSFrontDesc As DDSURFACEDESC2 Public DDSBack As DirectDrawSurface7 Public DDSBackDesc As DDSURFACEDESC2 Public Clipper As DirectDrawClipper Dim Pict() As Byte Dim AlphaRect As RECT Dim X As Long, Y As Long Dim Temp As Long Dim Index As Long Dim Index2 As Long Dim Pos As Long Dim PosPlus1 As Long Dim PosPlus2 As Long Dim PosPlus3 As Long Public Pal(255) As PALETTEENTRY Public Palette As DirectDrawPalette Public BlitRect As RECT Public FullSize As Boolean Public ExitLoop As Boolean Dim Accum As Long Dim Msg(9) As String Dim Counter As Long Dim MsgIndex As Long Dim bDrawText As Boolean Dim lastTime As Long Dim Xpos As Long, Ypos As Long Dim wait As Long Dim Angle As Single Dim Flag As Boolean Dim Count As Long Dim CurModeActiveStatus As Boolean Dim bRestore As Boolean Dim Mode As Boolean
Private Sub Main() InitializeDX '初始化Picture1以获得DirectDraw界面图像 With MainForm.Picture1 .Width = 640 * Screen.TwipsPerPixelX .Height = 480 * Screen.TwipsPerPixelY End With DDSBack.SetForeColor RGB(255, 255, 255) MainForm.Font.Name = "宋体" DDSBack.SetFont MainForm.Font Msg(0) = "一个显示火焰字的演示" Msg(1) = "演示" Msg(2) = "利用VB阵列" Msg(3) = "对显示内存" Msg(4) = "进行直接存取" Msg(5) = "{Esc}键退出" '设置8位的调色板 For Index = 0 To 84 Pal(Index + 1).red = Index * 3 + 3
|