C# 如何使透明面板的图片框出现?

C# 如何使透明面板的图片框出现?,c#,winforms,panel,transparency,C#,Winforms,Panel,Transparency,我正在做一个windows窗体的2D游戏,我有一个问题。。。 所以,我有一个面板,所有的“地面”瓷砖(PictureBox[])都是。。。但是,我需要在“地面瓷砖”的上面再加一个面板,这样看起来玩家好像在后面什么东西,而不是仅仅设置PictureBox.Image。。。但是这个面板需要是透明的,它的图片框需要出现才能产生效果,但是它没有。。。我之所以将瓷砖(PictureBox)放在面板内,是因为我想制造一种错觉,即相机聚焦在玩家身上(意思是玩家没有真正移动,移动的是面板) 有人能帮我吗?我知道

我正在做一个windows窗体的2D游戏,我有一个问题。。。 所以,我有一个面板,所有的“地面”瓷砖(PictureBox[])都是。。。但是,我需要在“地面瓷砖”的上面再加一个面板,这样看起来玩家好像在后面什么东西,而不是仅仅设置PictureBox.Image。。。但是这个面板需要是透明的,它的图片框需要出现才能产生效果,但是它没有。。。我之所以将瓷砖(PictureBox)放在面板内,是因为我想制造一种错觉,即相机聚焦在玩家身上(意思是玩家没有真正移动,移动的是面板)

有人能帮我吗?我知道它看起来很复杂。。。对不起

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using World;

namespace World
{

  public partial class LoadWorld : Form
  {

    public int TileSizeX = 30;
    public int TileSizeY = 30;
    public int TileT = 2500;
    public int TileX = 49;
    public int TileY = 49
    //Here's the problematic panel
    public Panel PropPanel = new Panel();
    public PictureBox[] WorldTile = new PictureBox[2500];
    public PictureBox[] PropTile = new PictureBox[2500];
    public static Dictionary<PictureBox, int[]> tileProp = new Dictionary<PictureBox, int[]>();
    public LoadWorld()
    {
        InitializeComponent();

    }
    private void LoadWorld_Load(object sender, EventArgs e)
    {
        //settings of the PropPanel
        PropPanel.BorderStyle = BorderStyle.None;
        PropPanel.BringToFront();
        PropPanel.BackColor = Color.Transparent;
        PropPanel.Visible = true;
        PropPanel.Name = "PropPanel";
        PropPanel.TabIndex = 0;
        int valueA = 0;
        int valueX = 0;
        int valueY = 0;
        foreach (PictureBox pictureBoxValue in WorldTile)
        {
            if(valueY < TileY)
            {
                if(valueX < TileX)
                {
                    WorldTile[valueA] = new PictureBox()
                    {
                        Size = new Size(TileSizeX, TileSizeY),
                        Location = new Point(valueX * 30, valueY * 30),
                        BackgroundImage = new Bitmap("Sprites/null.png"),
                        Visible = true,
                        Name = "tile" + valueA
                    };
                    WorldMap.Controls.Add(WorldTile[valueA]);
                    valueA = valueA + 1;
                    valueX = valueX + 1;
                }
                else if(valueX == TileX)
                {
                    WorldTile[valueA] = new PictureBox()
                    {
                        Size = new Size(TileSizeX, TileSizeY),
                        Location = new Point(valueX * 30, valueY * 30),
                        BackgroundImage = new Bitmap("Sprites/null.png"),
                        Visible = true,
                        Name = "tile" + valueA,
                     };
                    WorldMap.Controls.Add(WorldTile[valueA]);
                    valueA = valueA + 1;
                    valueY = valueY + 1;
                    valueX = 0;
                }
            }
            else if(valueY == TileY)
            {
                if (valueX < TileX)
                {
                    WorldTile[valueA] = new PictureBox()
                    {
                        Size = new Size(TileSizeX, TileSizeY),
                        Location = new Point(valueX * 30, valueY * 30),
                        BackgroundImage = new Bitmap("Sprites/null.png"),
                        Visible = true,
                        Name = "tile" + valueA,
                    };
                    WorldMap.Controls.Add(WorldTile[valueA]);
                    valueX = valueX + 1;
                    valueA = valueA + 1;
                }
                else if (valueX == TileX)
                {
                    WorldTile[valueA] = new PictureBox()
                    {
                        Size = new Size(TileSizeX, TileSizeY),
                        Location = new Point(valueX * 30, valueY * 30),
                        BackgroundImage = new Bitmap("Sprites/null.png"),
                        Visible = true,
                        Name = "tile" + valueA,

                    };
                    WorldMap.Controls.Add(WorldTile[valueA]);
                }
            }
        }
        SetGroundTiles();
        SetPropTiles();
    }

    public void SetGroundTiles()
    {
        SGT(1, "grass");
        SGT(2, "DirtPathVSideL");
        SGT(3, "DirtPathCenter");
        SGT(4, "DirtPathVSideR");

        //Road
        SGT(9, "SidewalkMiddle");
        SGT(10, "Asphalt");
        SGT(11, "Asphalt");
        SGT(12, "Asphalt2YL");
        SGT(13, "Asphalt");
        SGT(14, "Asphalt");
        SGT(15, "GrassConcreteHL");
        SGT(59, "SidewalkMiddle");
        SGT(60, "Asphalt");
        SGT(61, "Asphalt");
        SGT(62, "Asphalt2YL");
        SGT(63, "Asphalt");
        SGT(64, "Asphalt");
        SGT(65, "GrassConcreteHL");
        SGT(109, "SidewalkMiddle");
        SGT(110, "Asphalt");
        SGT(111, "Asphalt");
        SGT(112, "Asphalt2YL");
        SGT(113, "Asphalt");
        SGT(114, "Asphalt");
        SGT(115, "GrassConcreteHL");

    }
    public void SetPropTiles()
    {
        SPT(9, "SmallTree2", true, false);
        SPT(60, "SmallTree1", false, true);
    }
    public void SGT (int valueA, string texture)
    {
        WorldTile[valueA].BackgroundImage = new Bitmap("Sprites/" + texture + ".png");
    }
    public void SPT(int valueA, string texture, bool Collide, bool IsOverlaying)
    {

        PropTile[valueA] = new PictureBox
        {
            Name = "Panel" + valueA,
            Image = new Bitmap("Sprites/" + texture + ".png"),
            Location = WorldTile[valueA].Location,
            Size = WorldTile[valueA].Size,
            Visible = true,
            BackColor = Color.Transparent,

        };
        //Where PropPanel is being used
        PropTile[valueA].BorderStyle = BorderStyle.None;
        PropPanel.BringToFront();
        PropPanel.Controls.Add(PropTile[valueA]);
        WorldMap.Controls.Add(PropPanel);


    }
  }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
利用世界;
名称空间世界
{
公共部分类LoadWorld:Form
{
公共int TileSizeX=30;
公共整数TileSizeY=30;
公共int TileT=2500;
公共int-TileX=49;
公共整数TileY=49
//这是有问题的面板
公共面板PropPanel=新面板();
公共PictureBox[]WorldTile=新PictureBox[2500];
公共PictureBox[]PropTile=新PictureBox[2500];
公共静态字典tileProp=新字典();
公共加载世界()
{
初始化组件();
}
私有void LoadWorld_Load(对象发送方,事件参数e)
{
//PropPanel的设置
PropPanel.BorderStyle=BorderStyle.None;
PropPanel.BringToFront();
PropPanel.BackColor=颜色.透明;
PropPanel.Visible=true;
PropPanel.Name=“PropPanel”;
PropPanel.TabIndex=0;
int valueA=0;
int valueX=0;
int valueY=0;
foreach(WorldTile中的PictureBox pictureBoxValue)
{
如果(值<蒂利)
{
如果(值x