C# 游戏窗口内的特定绘图区域

C# 游戏窗口内的特定绘图区域,c#,xna,scroll,draw,popupwindow,C#,Xna,Scroll,Draw,Popupwindow,我试图做的部分问题是试图向别人解释我想要什么。我试图实现的是一个游戏中的弹出菜单或窗口,它有自己的绘图区域。例如,假设我有一个弹出窗口,其中有多个对象堆叠在彼此的顶部,例如按钮,但窗口上的对象太多,因此需要一个滚动条将它们移动到视图中。我要做的是使这些对象仅在窗口内部绘制: 带有涂鸦粉色的黑色区域是主要的游戏窗口,中间的图像是弹出窗口,深蓝色的方块是里面的对象。任何代码、建议和主要理论都将受到欢迎。我试着只在它们在窗户里面的时候画它们,这很管用,但它看起来不是很平滑,我希望物体在它们移出窗户时

我试图做的部分问题是试图向别人解释我想要什么。我试图实现的是一个游戏中的弹出菜单或窗口,它有自己的绘图区域。例如,假设我有一个弹出窗口,其中有多个对象堆叠在彼此的顶部,例如按钮,但窗口上的对象太多,因此需要一个滚动条将它们移动到视图中。我要做的是使这些对象仅在窗口内部绘制:

带有涂鸦粉色的黑色区域是主要的游戏窗口,中间的图像是弹出窗口,深蓝色的方块是里面的对象。任何代码、建议和主要理论都将受到欢迎。我试着只在它们在窗户里面的时候画它们,这很管用,但它看起来不是很平滑,我希望物体在它们移出窗户时逐渐消失,而不仅仅是在它们接触到边界时消失,特别是不要滑出窗户


谢谢。

在XNA中进行任何渲染之前,您可以在GraphicsDevice上设置视口。这允许您限制渲染对象的位置

例如,如果要将某些内容渲染到屏幕左上角的100x100像素区域,可以执行以下操作:

            // Create the rectangle
            var clipRectangle = new Microsoft.Xna.Framework.Rectangle(0,0,100,100);

            // Set the rectangle when you call SpriteBatch.Begin:
            mSpriteBatch.Begin(SpriteSortMode.Immediate, renderStates.BlendState,
                samplerState,
                depthStencilState,
                rasterizerState,
                null, matrix, 
                clipRectangle);

你用什么平台写这个游戏?如何显示弹出窗口因平台而异。你应该更具体地了解环境,你应该自己努力解决这个问题,这样你就可以解释什么已经不起作用了以及为什么。我有一个问题。Begin构造函数最多只使用8个构造函数?然而,你的回答让我更好地了解了我需要如何着手解决我的问题,在进行了更多的教育性谷歌搜索之后,我想我找到了我的答案:我尝试在我的绘图方法中使用两个不同的视口,但唯一一个似乎起作用的是最后使用的视口,在以前使用的视口中绘制的所有其他内容都不会显示。