最近在学习C#下Direct3D编程,想自己做一个Direct3D下的控件,网上搜罗了一些漂亮的控件的图片,开始制作。
过程中发现在渲染时,用Sprite.Draw方法进行贴图时图片的背景无法实现透明,非常难看,查了很多资料,都不能解决。后来自己做了一个加载位图的功能,终于解决了,这里记录下来,防止以后忘了。
先说一下利用Sprite.Draw方法的用法:
Sprite.Draw(Texture srcTexture, Rectangle srcRect, Vector3 center, Vector3 position, Color color);
其中:
srcTexture —— 待贴图的纹理,图片加载到texture中后显示出来
srcRect —— 待贴图纹理的矩形区域,可以通过设置该参数将纹理的部分区域显示出来
center —— Sprite的中心位置
position —— 纹理贴在Sprite上的位置
color —— 纹理的显示色彩比例
注意到这个方法中有两个Vector3的参数,一个是center,一个是position,到底有什么区别呢?通过测试,发现center参数类似于Cursor的HotPot,而position相当于MousePosition。两个参数结合起来就表示将Sprite的center对准屏幕的position进行贴图。这个功能对于控件的制作非常有用,例如父控件的位置在Position parentPos,子控件相对于父控件的位置是Position childPos,对子控件进行贴图的时候只要