我想要做的只是在屏幕上显示Texture2D
,屏幕也需要透明。我已经找到了一段可以使窗口无边框的代码。
IntPtr hWnd = this.Window.Handle;
var control = System.Windows.Forms.Control.FromHandle(hWnd);
var form = control.FindForm();
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
当放入Initialize()
方法时,这会成功使窗口无边框。
然而,当我在GraphicsDevice.Clear(Color.Transparent);
中使用Draw
时,所有结果都是在屏幕中间出现黑色方块。
有没有办法改变背景的不透明度?还有什么我可以尝试解决这个问题吗?
我听到的一些事情是截取背景截图并通过backbuffer在屏幕上显示,但我无法找到任何成功实现的解决方案。
编辑:这是绘制方法,而非常简单
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Transparent);
spriteBatch.Begin();
{
spriteBatch.Draw(tex, parameters, Color.White );
}
spriteBatch.End();
base.Draw(gameTime);
}
我还发现我可以通过form.opacity = 0;
更改窗体的不透明度,但这样也可以使纹理透明。