0

我目前正在开发一个项目,该项目使用基于 XNA 的自定义渲染引擎来绘制 UI 元素,例如:按钮、标签、面板等。

发动机结构相对简单。有一个屏幕管理器,其中包含多个游戏屏幕。游戏屏幕是通过扩展名为 GameView 的引擎基类来实现的。GameView 类负责处理 UI 元素层次结构。

开发人员可以向游戏视图添加一些 UI 控件的方式非常简单,其逻辑受 ASP.NET 控件层次结构的启发。您必须重写一个名为 LoadControls() 的方法,创建所需控件的实例并将它们添加到 GameView 控件集合中。

这里有一个例子:

    public override void LoadControls()
    {
        ImageFrame titleImage = new ImageFrame();
        titleImage.ID = "TitleImage";
        titleImage.Move(GameUI.Location(ViewLocation.CenterTop, -332, 4));
    titleImage.Width = 664;
    titleImage.Height = 166;
        titleImage.Image = "image_title";
        this.UI.Controls.Add(titleImage);

        ImageFrame freeImage = new ImageFrame();
        freeImage.ID = "FreeImage";
        freeImage.Move(GameUI.Location(ViewLocation.CenterTop, 160, 95));
        freeImage.Width = 170;
        freeImage.Height = 76;
        freeImage.Image = "image_free";
        freeImage.IsVisible = GameContext.Current.IsTrialMode;
        this.UI.Controls.Add(freeImage);

        Button playButton = new Button();
        playButton.ID = "PlayGameButton";
        playButton.Width = 216;
        playButton.Height = 96;
        playButton.Move(GameUI.Location(ViewLocation.CenterTop, -108, 130));
        playButton.Text = GameContext.Current.Dictionary[StringKeys.PlayGameButtonText];
        playButton.Font = FontNames.Floraless1;
        playButton.FontScale = 1.3f;
        playButton.FontPressedColor = Color.White * .8f;
        playButton.Click += new EventHandler<EventArgs>(PlayGameButton_Click);
        this.UI.Controls.Add(playButton);
    }

使用代码创建 UI 确实很容易,但是当您需要创建复杂的布局时,很难弄清楚结果。我想知道是否可以为 VS2010 开发一个自定义扩展来呈现我的 GameView 控件层次结构的“视图”。我不需要创建 UI 设计师。我只需要在代码编辑器中阅读一些手写代码并在我仍在 Visual Studio 中(未运行应用程序)时实时渲染结果。

简而言之,是否可以扩展 Visual Studio 2010 以创建自定义“设计器”,实时解析 .cs 代码并生成渲染输出?

4

1 回答 1

0

这可能会让您入门:创建自定义 Visual Studio 设计器

于 2012-12-30T13:29:09.953 回答