是否可以创建一个单独的GraphicDevice用于WP7中的背景渲染?
我正在尝试做的是偶尔使用XNA渲染图像并在silverlight应用程序中使用它。目前我可以使用SharedGraphicsDeviceManager实现这一点,它允许加入当前的GraphicDevice。缺点是我被迫为每个图像打开和关闭共享模式(SetSharingMode) - 这需要一些时间(100-200毫秒)。我宁愿为此使用单独的设备。
另一种选择是对整个页面使用纯XNA渲染模式,但这会给手机带来不必要的压力,因为它会每秒30次渲染大部分静态图像。
任何想法都会受到赞赏。
答案 0 :(得分:0)
将图像绑定到页面背景怎么样?
<Grid x:Name="LayoutRoot" Background="{Binding BackgroundImage}">
<!-- other content for the page -->
</Grid>
然后,您可以在ViewModel上的代码隐藏中随时更改图像
public class ViewModel
{
private ImageBrush _backgroundImage;
public ImageBrush BackgroundImage
{
get { return _backgroundImage; }
set
{
_backgroundImage = value;
OnPropertyChanged("BackgroundImage");
}
}
// pass the uri of the newly saved image. Even if it's the same location
// firing the PropertyChanged event will make the page get the new image
public void ChangeImage(Uri newImageLocation)
{
BitmapImage source = new BitmapImage(newImageLocation);
BackgroundImage = new ImageBrush { ImageSource = source};
}
}