【问题标题】:Specific Draw region within Game Window游戏窗口中的特定绘图区域
【发布时间】:2014-10-19 16:45:01
【问题描述】:

我正在尝试做的部分问题是试图向其他人解释我想要什么。我想要完成的是一个游戏内弹出菜单或窗口,它有自己的绘图区域。例如,假设我有一个弹出窗口,其中有多个相互堆叠的对象,例如按钮,但是窗口中容纳不下的对象太多,因此您需要一个滚动条才能将它们移动到视图中。我想要做的是让这些对象只在窗口内绘制: http://imgur.com/8IWNEqN

带有粉红色涂鸦的黑色区域是主游戏窗口,中间图像是弹出窗口,深蓝色方块是里面的对象。任何代码、建议和主要理论都将不胜感激。我尝试仅在它们在窗口内时才绘制它们,这可行,但看起来不是很平滑,我希望对象在它们移出窗口时逐渐消失,而不仅仅是在它们接触边框时消失,尤其是不溜出窗外。

谢谢。

【问题讨论】:

  • 你用什么平台写这个游戏?如何显示弹出窗口因平台而异。您应该更具体地了解环境,并且您应该自己努力解决这个问题,这样您就可以解释什么已经不起作用以及为什么。

标签: c# xna scroll draw popupwindow


【解决方案1】:

在 XNA 中进行任何渲染之前,您可以在 GraphicsDevice 上设置 ViewPort。这使您可以限制渲染的位置。

例如,如果您想在屏幕左上角的 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 个构造函数?但是,您的回答让我更好地了解了我需要如何解决我的问题,并且经过一些更具教育意义的谷歌搜索后,我想我找到了答案:rbwhitaker.wikidot.com/viewports-split-screen
  • 我尝试在我的 Draw() 方法中使用两个不同的视口,但似乎唯一起作用的是最后使用的那个,在以前使用的视口中绘制的其他所有内容似乎都没有出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多