频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

.Net Framework智能版开发移动游戏

来源:yesky 作者:WAYNE 郭磊 出处:巧巧读书 2005-12-30 进入讨论组
上一页 1 2 3 4 5 6 7 下一页 
Color Key透明度

  游戏开发者使用的一种流行的技术就是Color Key技术,当渲染时指定的颜色就被从位图中抽去。 这种技术也称为色度键掩盖,颜色剔除和透明混合。

.Net Framework智能版开发移动游戏(图四)

图3子图形.

.Net Framework智能版开发移动游戏(图五)
图4使用Color Key透明度

.Net Framework智能版开发移动游戏(图六)
图5未使用Color Key透明度

  在子图形位图中(图3),非对象区域充满着绛红色,可以被用做color key。 使用或者不使用这种技术的混和效果分别地如图4和图5所示。

  透明混合的第一步是建立在渲染时要被掩盖的color key(色度键)。我们需要指定一个精确的色度键值,而不是指定一个范围。

ImageAttributes imgattr = new ImageAttributes();
imgattr.SetColorKey(Color.Magenta, Color.Magenta);

  如果你不想使用Color类中提供的标准颜色组,你可以按照如下方法来指定红色、绿色和蓝色(RGB)值构造你自己的颜色。

imgattr.SetColorKey(Color.FromArgb(255, 0, 255),
Color.FromArgb(255, 0, 255));

  另一种我经常用来指定色度值的技术就是直接使用像素值。 这就避开了处理RGB值的必要。 而且,色度值不是硬编码,可以独立的在位图上被改变。

imgattr.SetColorKey(bmpSprite.GetPixel(0,0), bmpSprite.GetPixel(0,0));

  现在,让我们看看如何使用我们建立的色度值透明地描画子图形。

gxOff.DrawImage(bmpSprite, new Rectangle(x, y, bmpSprite.Width,
bmpSprite.Height), 0, 0, bmpSprite.Width, bmpSprite.Height,
GraphicsUnit.Pixel, imgattr);

  在上面的代码段里,目标矩形被指定为new Rectangle(x,y,bmpSprite.Width,bmpSprite.Height),这里x和y是子图形的所要放置位置的坐标。

  通常,在描画的时候,有可能需要伸展或者缩小子图形。 你可以通过调节目标矩形的宽度和高度达到这个目的。 同样,你还可以调节源矩阵来仅仅描画子图形的一部分,即使这并不一定非常有用。

  当设置用于你的子图形的位图时,建议考虑一下你的目标设备的色彩解析度。 例如,一个24位色位图在一个12色彩解析度的设备上可能不能渲染;这两种在颜色梯度上的区别可能依赖于选择使用的颜色。 而且当选择要被掩盖的ColorKey时,要保证这个颜色值要处于目标显示支持的颜色范围之内。 记住,它支持精确的ColorKey匹配。

  Color Key透明度是.NET Compact Framework支持的唯一的混合技术。

  把图象作为嵌入资源

  你可以把一个图片资源嵌入到你的部件中去,添加图象到工程中,并且设置它的Build Action属性为" Embedded Resource "。 请参看在线帮助主题" Embedding Resource Files in Applications "获取更多的信息。

  然后我们就可以象下面这样使用资源中的内嵌位图了。

Assembly asm = Assembly.GetExecutingAssembly();
Bitmap bmpSprite = new Bitmap(asm.GetManifestResourceStream("Sprite"));

  Bitmap类支持BMP、JPG、GIF和PNG图像格式。

  调整你的着色方法

  游戏中的着色程序必须严格的最优化设计以便取得最好的性能。 强制的给屏幕着色将会擦除并重画所有的屏外的子图形,然后使用屏外图象刷屏。 显然,这样做效率很低,因为我们没有必要每次都重画整个屏幕。 在这里,我们的帧速率取决于Compact Framework能够刷新整个屏幕的速率。

  一种更好的方法是计算我们的游戏中的子图片的变化的区域,然后只刷新屏幕中这些变化的部分。 子图片可能因为各种原因变化,比如移动、在图象/颜色上变化或者与其他的子图片冲突等。在本章,我们将讨论各种用来有效的计算子图形变化区域的技术。URl收藏 http://www.qqread.com/dotnet/u292184000.html 更多文章 更多内容请看游戏开发网络游戏攻略.NET Framework新手入门专题,或进入讨论组讨论。

上一页 1 2 3 4 5 6 7 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章