游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7181|回复: 18

我用VB做RPG地图编辑器,遇到一个显示方面的问题

[复制链接]

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
发表于 2005-10-28 18:49:00 | 显示全部楼层 |阅读模式
怎么才可以实现像DX中的KEYCOLOR功能,我现在弄透明部分都是逐点判断,getpixel ,setpixel这样来的,效率太低了,我知道还有一种做透明的方法就是遮招,可是还要两幅图,我的目的是地图中几个层的叠加,所以这种方法可行性也不大,唯一最好的就是用COLORKEY,能实现吗?

1

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-10-29 09:01:00 | 显示全部楼层

Re: 我用VB做RPG地图编辑器,遇到一个显示方面的问题

Public Function TransSRC(ByVal T_DC As Long, ByVal T_x As Long, ByVal T_y As Long, ByVal S_DC As Long, ByVal S_X As Long, ByVal S_Y As Long, ByVal S_Width As Long, ByVal S_Height As Long, ByVal TransColor As Long) As Boolean
'****************************************
'               透明图片显示函数2
'****************************************
   
    Dim MaskDC, Maskbitmap As Long
    Dim ForeDc, ForeBitmap As Long
    Dim backDC, backBitmap As Long
   
    ForeDc = CreateDCandBmpBySize(S_Width, S_Height)
    BitBlt ForeDc, 0, 0, S_Width, S_Height, S_DC, S_X, S_Y, SRCCOPY
    ForeBitmap = hBitmap
   
    backDC = CreateDCandBmpBySize(S_Width, S_Height)
    BitBlt backDC, 0, 0, S_Width, S_Height, T_DC, T_x, T_y, SRCCOPY
    backBitmap = hBitmap
   
    MaskDC = CreateCompatibleDC(0)   '1.建立单色mask DC
    Maskbitmap = CreateBitmap(S_Width, S_Height, 1, 1, 0)
    SelectObject MaskDC, Maskbitmap
   
    SetBkColor ForeDc, TransColor '2.把前景图的背景色设为透明色
    BitBlt MaskDC, 0, 0, S_Width, S_Height, ForeDc, 0, 0, SRCCOPY '3.copy前景图到单色DC得到mask

    SetBkColor ForeDc, RGB(0, 0, 0)   '4.把前景图与mask图作与运算
    SetTextColor ForeDc, RGB(255, 255, 255)
    BitBlt ForeDc, 0, 0, S_Width, S_Height, MaskDC, 0, 0, SRCAND
   
    SetBkColor backDC, RGB(255, 255, 255)   '5.把背景图与mask图作与运算
    SetTextColor backDC, RGB(0, 0, 0)
    BitBlt backDC, 0, 0, S_Width, S_Height, MaskDC, 0, 0, SRCAND
   
    '6.把前景图和背景图作或运算
    BitBlt backDC, 0, 0, S_Width, S_Height, ForeDc, 0, 0, SRCPAINT
   
    BitBlt T_DC, T_x, T_y, S_Width, S_Height, backDC, 0, 0, SRCCOPY
   
    DeleteDC ForeDc: DeleteDC backDC: DelObject ForeBitmap: DelObject backBitmap
    DeleteDC MaskDC
    DelObject Maskbitmap
End Function

1

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-10-29 09:03:00 | 显示全部楼层

Re: 我用VB做RPG地图编辑器,遇到一个显示方面的问题

方法2:

Public Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal HeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal crTransparent As Long) As Long


这个简单明了。

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2005-10-31 10:57:00 | 显示全部楼层

Re:我用VB做RPG地图编辑器,遇到一个显示方面的问题

用TransparentBlt,我想设2个颜色过滤,怎么办

14

主题

166

帖子

171

积分

注册会员

Rank: 2

积分
171
发表于 2005-11-1 17:59:00 | 显示全部楼层

Re:我用VB做RPG地图编辑器,遇到一个显示方面的问题

既然要2个颜色都做keycolor,不如把这两个颜色合并为一个颜色

1

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-11-2 08:22:00 | 显示全部楼层

Re: 我用VB做RPG地图编辑器,遇到一个显示方面的问题

他的意思是说要实现类似alpha混和的效果

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-11-2 13:16:00 | 显示全部楼层

Re: 我用VB做RPG地图编辑器,遇到一个显示方面的问题

d3d 或者 sprite

1

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2005-11-18 16:06:00 | 显示全部楼层

Re:我用VB做RPG地图编辑器,遇到一个显示方面的问题

请问:用VB怎么做地图编辑器?或者是制作教程也行。
小弟急用!谢谢各位了

2

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2007-8-30 17:38:00 | 显示全部楼层

Re:我用VB做RPG地图编辑器,遇到一个显示方面的问题

!

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2007-8-30 19:33:00 | 显示全部楼层

Re: 我用VB做RPG地图编辑器,遇到一个显示方面的问题

表面有个KeyColor属性啊 设置就好了 只要设置High那个,Low那个没有用
如果想制作半透明的话DDRAW会比较麻烦,最简单的办法就是打点试,具体是什么样子 你可以观察一下《传奇》的阴影是怎样绘制你 这你就知道了
由于色位问题,设置DDRAW的KEYCOLOR只有白色RGB(FFFFFF)和玫红色(FF00FF)不需要转换位数,其余还要设置后才能成功透明,还要说明的是DDRAW不支持透明背景图片
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-18 21:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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