xna中spritebatch的draw函数重载的七种应用解析
2012-08-29 22:26
447 查看
SpriteBatch的Draw函数有七个重载方式,这七个重载方式可以让简单的2D效果很容易实现.
1.SpriteBatch.Draw(Texture2D,Vector2,Color)
第一个参数很显然就是2D纹理了,第二个参数是一个2维向量,这里也就是一对Float的数,用于指定纹理的坐标,第三个参数也就是颜色遮罩,一张图换了颜色遮罩就会产生不同颜色的效果。
2.SpriteBatch.Draw(Texture2D,Rectangle,Color)
这个重载实际上就是用一个矩形(第二个参数)代替了2维向量,大家都知道矩形有坐标点还有宽和高,这里用矩形不仅用矩形的坐标替代了Vector2并且指定了纹理的大小(矩形的宽高),这样他就有了缩放功能了。
3.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color)
4.SpriteBatch.Draw(Texture2D,Rectangle,Rectangle?,Color)
3,4两个重载实际上就比上面重载多了一个Rectangle?带问号的参数在C#里的可空类型(指可以设为Null的参数),这个矩形的作用是用于指绘制整个纹理的某一个部分,如果传入Null的话 就是整张图都显示。
5.SpriteBatch.Draw(Texture2D,Rectangle,Rectangle?,Color,Float,Vector2,SpriteEffects,Float)
第一个Float指的是纹理顺时针旋转度数,注意:里面的度数不是角度而是弧度,所以360°不只旋转一圈,既然要旋转肯定得要一个固定点,这个固定点就是接着的Vector2,这里你可以想象那个点就是一个钉子固定着纹理然后进行旋转。这里又要注意了:这个点不只是为了旋转,这个点不同,也会影响到纹理的放大缩小还有旋转,你可以自己用手去固定矩形(你可以用一本书)然后按住不同点就能看到他旋转的变化(特注:这个点是载入图片内部的坐标系的位置,不是对于屏幕的坐标系)。下一个参数SpriteEffects是一个Enum类型是设置纹理左右映射和上下映射的(也就是有镜像的效果)这里可以枚举多个中间用|分开便可,最后一个参数是又是一个Float他是设置纹理的深度,只能设置0到1之间的浮点数,此参数会影响到纹理画的顺序,0是最前面1是最后面,然后根据SpriteBatch.Begin里的SpriteSortMode来决定画的顺序,当画面上有很多纹理的时候就需要好好规划下这个参数了。
6.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color,Float,Vector2,Float,SpriteEffects,Float)
7.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color,Float,Vector2,Vector2,SpriteEffects,Float)
第6个和第7个重载在倒数第三个位置加了一个缩放参数,因为第二个参数被改为Vector2没有缩放功能了,所以就在后面加了这个缩放参数,这个参数可以是Float也可以是一个Vector2,Float是等比缩放,Vector2是按不同的比例缩放。
1.SpriteBatch.Draw(Texture2D,Vector2,Color)
第一个参数很显然就是2D纹理了,第二个参数是一个2维向量,这里也就是一对Float的数,用于指定纹理的坐标,第三个参数也就是颜色遮罩,一张图换了颜色遮罩就会产生不同颜色的效果。
2.SpriteBatch.Draw(Texture2D,Rectangle,Color)
这个重载实际上就是用一个矩形(第二个参数)代替了2维向量,大家都知道矩形有坐标点还有宽和高,这里用矩形不仅用矩形的坐标替代了Vector2并且指定了纹理的大小(矩形的宽高),这样他就有了缩放功能了。
3.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color)
4.SpriteBatch.Draw(Texture2D,Rectangle,Rectangle?,Color)
3,4两个重载实际上就比上面重载多了一个Rectangle?带问号的参数在C#里的可空类型(指可以设为Null的参数),这个矩形的作用是用于指绘制整个纹理的某一个部分,如果传入Null的话 就是整张图都显示。
5.SpriteBatch.Draw(Texture2D,Rectangle,Rectangle?,Color,Float,Vector2,SpriteEffects,Float)
第一个Float指的是纹理顺时针旋转度数,注意:里面的度数不是角度而是弧度,所以360°不只旋转一圈,既然要旋转肯定得要一个固定点,这个固定点就是接着的Vector2,这里你可以想象那个点就是一个钉子固定着纹理然后进行旋转。这里又要注意了:这个点不只是为了旋转,这个点不同,也会影响到纹理的放大缩小还有旋转,你可以自己用手去固定矩形(你可以用一本书)然后按住不同点就能看到他旋转的变化(特注:这个点是载入图片内部的坐标系的位置,不是对于屏幕的坐标系)。下一个参数SpriteEffects是一个Enum类型是设置纹理左右映射和上下映射的(也就是有镜像的效果)这里可以枚举多个中间用|分开便可,最后一个参数是又是一个Float他是设置纹理的深度,只能设置0到1之间的浮点数,此参数会影响到纹理画的顺序,0是最前面1是最后面,然后根据SpriteBatch.Begin里的SpriteSortMode来决定画的顺序,当画面上有很多纹理的时候就需要好好规划下这个参数了。
6.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color,Float,Vector2,Float,SpriteEffects,Float)
7.SpriteBatch.Draw(Texture2D,Vector2,Rectangle?,Color,Float,Vector2,Vector2,SpriteEffects,Float)
第6个和第7个重载在倒数第三个位置加了一个缩放参数,因为第二个参数被改为Vector2没有缩放功能了,所以就在后面加了这个缩放参数,这个参数可以是Float也可以是一个Vector2,Float是等比缩放,Vector2是按不同的比例缩放。
相关文章推荐
- XNA-SpriteBatch.Draw()的重载方法
- XNA学习笔记——SpriteBatch.Begin的Matrix参数
- xna 4.0 在3D 场景中用spritebatch 写2D文字3D显示不正常的问题
- XNA学习笔记——SpriteBatch.Draw的layerDepth
- XNA中SpriteBatch.Begin()重载中的BlendState解析
- XNA学习笔记——SpriteBatch.Draw的origin参数
- SpriteBatch and renderstates in XNA Game Studio 4.0
- Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Policy Injection Application Block的集成
- Json解析工具Jackson(简单应用)
- 解析argc argv在php中的应用
- JAVA对于数字证书的常用操作方法应用解析
- 详细解析Linux scp命令的应用
- Spring-batch使用PatternMatchingCompositeLineTokenizer解析不规则数据文件
- KandQ:单例模式的七种写法及其相关问题解析
- 应用系统中常见报表类型解析
- cocos2dx shader应用——sprite变灰
- Node.js应用实战和工作原理解析
- 应用软件系统架构设计的“七种武器”
- 一小时了解数据挖掘①:解析常见的大数据应用案例
- 转载:应用软件系统架构设计的“七种武器”