C# 如何从XNA窗口中的transpart/invisible表单创建背景面板?

C# 如何从XNA窗口中的transpart/invisible表单创建背景面板?,c#,winforms,user-interface,colors,xna-4.0,C#,Winforms,User Interface,Colors,Xna 4.0,我有一个XNA项目,它利用Windows.Forms来创建GUI。我们的GUI由左面板和右面板组成。它们上面都有一个图像(我们称之为面板图像)。这些图像有按钮,上面有图像。现在面板图像没有完全覆盖面板。现在我们要做的是使面板不可见或透明,以便您只看到面板图像。在下面的图片中,我圈出了我想要透明/不可见的东西。正如您在项目的上半部分所看到的,它看起来已经是透明的,但这只是因为它与XNA场景上的背景融合在一起。在面板位于地面上方的底部,您可以看到面板如何延伸到比面板图像更远的位置。那么,有人知道我如

我有一个XNA项目,它利用Windows.Forms来创建GUI。我们的GUI由左面板和右面板组成。它们上面都有一个图像(我们称之为面板图像)。这些图像有按钮,上面有图像。现在面板图像没有完全覆盖面板。现在我们要做的是使面板不可见或透明,以便您只看到面板图像。在下面的图片中,我圈出了我想要透明/不可见的东西。正如您在项目的上半部分所看到的,它看起来已经是透明的,但这只是因为它与XNA场景上的背景融合在一起。在面板位于地面上方的底部,您可以看到面板如何延伸到比面板图像更远的位置。那么,有人知道我如何使这些部分不可见/透明吗

好吧,我们把面板的颜色弄得一团糟。透明,洋红(XNA透明色),这些尝试都没有成功。欢迎您提供任何意见/建议,我们将不胜感激

以下是设置面板的代码:

        this.pnlLeftSide.BackgroundImage = global::Referenceator_UI.Resources.LeftBar;
        this.pnlLeftSide.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
        this.pnlLeftSide.Controls.Add(this.btnScreenShot);
        this.pnlLeftSide.Controls.Add(this.btnScale);
        this.pnlLeftSide.Controls.Add(this.btnMove);
        this.pnlLeftSide.Controls.Add(this.btnRotate);
        this.pnlLeftSide.Controls.Add(this.btnSelect);
        this.pnlLeftSide.Location = new System.Drawing.Point(0, 0);
        this.pnlLeftSide.Name = "pnlLeftSide";
        this.pnlLeftSide.Size = new System.Drawing.Size(197, Screen.PrimaryScreen.WorkingArea.Height);
        this.pnlLeftSide.Dock = DockStyle.Left;
        this.pnlLeftSide.BackColor = controlColor; //this what we want invisible/transparent
-谢谢你,我的社区

尝试设置面板的属性。您可以手动创建必要的
区域
对象(通过枚举描述可见多边形的线),或者使用某种方法将带有透明颜色键的图像转换为
区域
(例如,可以轻松地用谷歌搜索)

由于面板的几何图形似乎不太复杂,您可以按照以下方式手动创建
区域

using(var gp = new System.Drawing.Drawing2D.GraphicsPath())
{
    // Here goes series of AddLine() calls.
    // You must 
    // gp.AddLine(0, 0, leftPanel.Width, 0);
    // ...
    gp.CloseFigure();
    return new Region(gp);
}
请注意,使用此方法将获得锐利的边缘(即使有效)。考虑使用XNA绘制所有GUI。

尝试设置面板的属性。您可以手动创建必要的

区域
对象(通过枚举描述可见多边形的线),或者使用某种方法将带有透明颜色键的图像转换为
区域
(例如,可以轻松地用谷歌搜索)

由于面板的几何图形似乎不太复杂,您可以按照以下方式手动创建
区域

using(var gp = new System.Drawing.Drawing2D.GraphicsPath())
{
    // Here goes series of AddLine() calls.
    // You must 
    // gp.AddLine(0, 0, leftPanel.Width, 0);
    // ...
    gp.CloseFigure();
    return new Region(gp);
}

请注意,使用此方法将获得锐利的边缘(即使有效)。考虑使用XNA绘制所有GUI。

为什么面板太大?把它变小:)为什么你的面板太大了?让它变小:)