彩票走势图

实现Silverlight与XNA混合调用

转帖|其它|编辑:郝浩|2011-06-07 13:53:59.000|阅读 1047 次

概述:上一篇博客提到XNA可以在Silverlight中绘制资源,但是,一旦一个Silverlight页面由XNA接管后,就无法直接显示页面上的控件了,这样就无法体现Silverlight与XNA的优势了,为了解决这个问题,实现Silverlight与XNA混合调用,windows phone7.1又提供了一个新的UIElementRender类。通过这个类来加载所要绘制的控件。以下是一个示例工程。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  上一篇博客提到XNA可以在Silverlight中绘制资源,但是,一旦一个Silverlight页面由XNA接管后,就无法直接显示页面上的控件了,这样就无法体现Silverlight与XNA的优势了,为了解决这个问题,实现Silverlight与XNA混合调用,windows phone7.1又提供了一个新的UIElementRender类。通过这个类来加载所要绘制的控件。以下是一个示例工程。

1、 首先同样要先使用3d模板创建一个3d工程。

2、 在GamePage.xaml中加入控件,用三个按钮来控制碰撞的红色方块的开始与停止以及透明度的变化。

<Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="71*&quot; />

            <RowDefinition Height="650*" />

 &nbsp;      &nbsp;   <RowDefinition Height="79*" />

      &nbsp; </Grid.RowDefinitions>

        <Button Content="开始" Height="72" HorizontalAlignment="Left"
Margin="69,-1,0,0" Name="button1"
VerticalAlignment="Top" Width="330" Click="button1_Click&quot; />

   ;&nbsp;    <Grid Grid.Row="1" Name="ContentPanel">

 &nbsp;          <Image Source="Lighthouse.jpg" Stretch="Fill&quot;/>

 &nbsp;      <;/Grid>

        <Button Content="不透明" Grid.Row="2" Height="72"
HorizontalAlignment="Left" Name="button2"
VerticalAlignment="Top" Width="153" Click="button2_Click&quot; />

        <Button Content="半透明" Grid.Row="2" Height="72" HorizontalAlignment="Right" Margin="0,0,151,0" Name="button3" VerticalAlignment="Top"
Width="170&quot; Click="button3_Click" />

        <Button Content="透明" Grid.Row="2" Height="72"
HorizontalAlignment="Right" Name="button4" VerticalAlignment="Top" Width="145" Click="button4_Click&quot; />

    </Grid>

3、 在GamePage.xaml.cs中加入代码

声明一个UIElementRenderer实例 UIElementRenderer renderer;

委托LayoutUpdate事件 LayoutUpdated += new EventHandler
(GamePage_LayoutUpdated);

在这个事件的响应函数中初始化UIElementRenderer实例,这时将整个页面做为rootElement renderer = new UIElementRenderer(this, (int)ActualWidth, (int)ActualHeight);

绘制这个实例

if(IsStart)

      spriteBatch.Draw(texture, spritePosition, new Color(255, 255, 255, alpha));

按钮执行的效果代码

private void button1_Click(object sender, RoutedEventArgs e)

        {

            IsStart = !IsStart;

        }

 

&nbsp;       private void button2_Click(object sender, RoutedEventArgs e)

        {

            alpha = 255;

        }

        private void button3_Click(object sender, RoutedEventArgs e)

        {

  &nbsp; &nbsp;       alpha = 150;

        }

        private void button4_Click(object sender, RoutedEventArgs e)

        {

        &nbsp;   alpha = 50;

        }

4、运行效果

点击开始按钮,出现红色移动的小块。

点击半透明按钮,可以看到红色小块开始透明。

点击透明按钮,红色小块更加透明了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP