游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3008|回复: 6

加载GIF,JPG到Surface

[复制链接]

42

主题

140

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
发表于 2003-10-17 16:06:00 | 显示全部楼层 |阅读模式
加载GIF,JPG到Surface                    
By: W-Buffer译:ZH1110

这非常简单,我们不需要某种编码器去取得JPG数据,或类似的东西。我们只要用一个StdPicture类加载图片,然后传递到 Surface, 但是首先我们需要声明下面 API 函数:

Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Public Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

我们需要一些东西加载图片:
Dim Pict1 As StdPicture
Set Pict1 = LoadPicture("MyPict.jpg")

现在创建surface:
Dim TDesc As DDSurfaceDesc2

TDesc.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
TDesc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
TDesc.lHeight = CLng((Pict1.Height * 0.001) * 567 / Screen.TwipsPerPixelY)
TDesc.lWidth = CLng((TPict.Width * 0.001) * 567 / Screen.TwipsPerPixelX)

Set Surf = DDraw.CreateSurface(TDesc)

Dim SurfDC As Long, PictDC As Long
SurfDC = Surf.GetDC
PictDC = CreateCompatibleDC(0)
SelectObject Pict1.Handle, PictDC

现在我们直接用BitBlt或StretchBlt拷贝Pict1到Surf :

仅拷贝相同尺寸:
BitBlt SurfDC, 0, 0, TDesc.lWidth, TDesc.lHeight, PictDC, 0, 0, vbSrcCopy

拷贝拉升图片:
StretchBlt SurfDC, 0, 0, StretchWidth, StretchHeight, PictDC, 0, 0, TDesc.lWidth, TDesc.lWidth, vbSrcCopy

释放 DCs:
Surf.ReleaseDC SurfDC
DelecteDC PictDC
Set Pict1 = Nothing

下一步? 下载 SurfUtil.Bas -这样你也会了这个技术!

注:有时StretchBlt 不能正确显示GIFs, 这就是为什么我加入了BitBlt 操作.

sf_2003101716648.rar

911 Bytes, 下载次数:

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-8-30 02:41:00 | 显示全部楼层 |阅读模式
   

73

主题

612

帖子

618

积分

高级会员

Rank: 4

积分
618
发表于 2003-10-17 16:26:00 | 显示全部楼层

Re:加载GIF,JPG到Surface

支持,加油啊,继续啊,放火啊,抢劫啊,快啊!

1

主题

121

帖子

121

积分

注册会员

Rank: 2

积分
121
发表于 2006-8-30 09:03:00 | 显示全部楼层

Re:加载GIF,JPG到Surface

介绍一个好东西
http://www.dccoo.com/index.html

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-8-30 10:40:00 | 显示全部楼层

Re:加载GIF,JPG到Surface

附件下载不了

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2006-8-30 22:32:00 | 显示全部楼层

Re:加载GIF,JPG到Surface

请重新上传楼主;)

43

主题

229

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
发表于 2006-9-1 00:25:00 | 显示全部楼层

Re:加载GIF,JPG到Surface

貌似抄的才是,我看过的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 05:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表