按钮在绘制对象上

本文关键字:对象 绘制 按钮 | 更新日期: 2023-09-27 18:05:44

我正在尝试添加一个按钮,以便它将出现在我正在绘制的屏幕顶部,在XNA/Silverlight Windows手机游戏中。

当前地图正在它上面绘制,所以按钮看起来不可见。有人知道我该怎么解决这个问题吗?

在前面的代码中创建了按钮switchScreen,但没有初始化。

下面是我添加按钮的代码:

private void OnDraw(object sender, GameTimerEventArgs e)
{
    #region CommonStuff
    SharedGraphicsDeviceManager.Current.GraphicsDevice.Clear(Color.CornflowerBlue);
    #endregion CommonStuff
    if (is3D)
    {
        OnDraw3D(sender, e);
    }
    else
    {
        OnDraw2D(sender, e);
    }
    switchScreen = new Button();
    switchScreen.Height = 20.0;
    switchScreen.Width = 100.0;
    switchScreen.Content = "Switch to Shooting Screen";
    switchScreen.Margin = new Thickness(phoneScreen.Height - switchScreen.Width - 
        20.0, 20.0, 20.0, phoneScreen.Width - switchScreen.Height - 20.0);
    switchScreen.Visibility = System.Windows.Visibility.Visible;
}

我只测试OnDraw2D所以这是它的代码:

private void OnDraw2D(object sender, GameTimerEventArgs e)
{
    spriteBatch.Begin();
    // TODO: Add your drawing code here
    map.Draw(e.ElapsedTime, e.TotalTime);
    // npc.Draw(gameTime);
}

map.Draw在这里

public override void Draw(TimeSpan elapsedTime, TimeSpan totalTime)
{
    // Draw the Sky
    gamePage.getSpriteBatch().Draw(background, Position, Color.White);
    foreach (Person person in people)
    {
        person.Draw(elapsedTime, totalTime);
    }
    base.Draw(elapsedTime, totalTime);
}

backgroundTexture.2D, PositionVector2

按钮在绘制对象上

我想,既然你手动创建按钮,你可能需要使用这个代码来代替(我假设你正在使用Windows窗体Button控件):

switchScreen.Location = new System.Drawing.Point(xLocation, yLocation);
switchScreen.Name = name;
switchScreen.Size = new System.Drawing.Size(xSize, ySize);
switchScreen.TabIndex = 0;
switchScreen.Text = text;
switchScreen.UseVisualStyleBackColor = true;
Controls.Add(switchScreen);

你是如何实现Windows窗体的?据我所知,如果没有底层表单,你就不能添加按钮