游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: halei

跪求请问有没有写2D透明贴图的函数?

[复制链接]

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-6-6 16:16:00 | 显示全部楼层

Re: 跪求请问有没有写2D透明贴图的函数?

TransparentBlt


函数功能:该函数对指定的源设备环境中的矩形区域像素的颜色数据进行位块(bit_block)转换,并将结果置于目标设备环境。

函数原型:BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent);

参数:
hdcDest:指向目标设备环境的句柄。
nXOriginDest:指定目标矩形左上角的X轴坐标,坐标以逻辑单位表示。
nYOriginDest:指定目标矩形左上角的Y轴坐标,坐标以逻辑单位表示。
nWidthDest:指定目标矩形的宽度。
nHeightDest:指定目标矩形高度的句柄。
hdcsrc:指向源设备环境的句柄。
nXOriginSrc:指定源矩形(左上角)的X轴坐标,坐标以逻辑单位表示。
nYOriginsrc:指定源矩形(左上角)的Y轴坐标,坐标以逻辑单位表示。
nWidthSrc:指定源矩形的宽度。
nHeightSrc:指定源矩形的高度。:源位图中的RGB值当作透明颜色。返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。

Windows NT:若想获取更多错误信息,请调用GetLastError函数。

备注:函数TransparentBlt支持4位/像素和8位/像素格式的源位图,使用AlphaBlend可以指定带有透明度的32位/像素格式的位图。如果源和目标矩形的大小不一致,那么将对源位图进行拉伸以与目标矩形匹配,当使用SetStretchBltMode函数时,BLACKONWHITE和WHITEONBLACK两种iStretchMode模式将被转换成TransparentBlt函数的COLORONCOLOR模式。目标设备环境指定了用于目标坐标的变换类型,而源设备环境指定了源坐标使用的变换类型。如果源位图或目标位图的宽度或高度是负数,那么TransparentBlt函数也不对位图进行镜像。

速查:Windows NT:5.0及以上版本;Windows:98及以上版本;Windows CE:不支持;头文件:wingdi.h:库文件:作为一个资源包含在msimg32.dll中。

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-6-14 09:16:00 | 显示全部楼层

Re:跪求请问有没有写2D透明贴图的函数?

看了下楼上众人的回答,怎么都是使用hdc的?

如果是在DirectDraw下,最好不要调用GDI绘图函数,显得不伦不类……当然打个文字还是可以的。貌似在DD里打字不太容易……

使用DD的Blt函数可以设置透明色,一般是RGB(0,0,0),或者8位的索引值0,在图形变换时,透明色不会被贴上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 06:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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