轉帖|其它|編輯:郝浩|2011-06-07 13:53:59.000|閱讀 1062 次
概述:上一篇博客提到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*" />
<RowDefinition Height="650*" />
<RowDefinition Height="79*" />
</Grid.RowDefinitions>
<Button Content="開始" Height="72" HorizontalAlignment="Left"
Margin="69,-1,0,0" Name="button1"
VerticalAlignment="Top" Width="330" Click="button1_Click" />
<Grid Grid.Row="1" Name="ContentPanel">
<Image Source="Lighthouse.jpg" Stretch="Fill"/>
</Grid>
<Button Content="不透明" Grid.Row="2" Height="72"
HorizontalAlignment="Left" Name="button2"
VerticalAlignment="Top" Width="153" Click="button2_Click" />
<Button Content="半透明" Grid.Row="2" Height="72" HorizontalAlignment="Right" Margin="0,0,151,0" Name="button3" VerticalAlignment="Top"
Width="170" Click="button3_Click" />
<Button Content="透明" Grid.Row="2" Height="72"
HorizontalAlignment="Right" Name="button4" VerticalAlignment="Top" Width="145" Click="button4_Click" />
</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;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
alpha = 255;
}
private void button3_Click(object sender, RoutedEventArgs e)
{
alpha = 150;
}
private void button4_Click(object sender, RoutedEventArgs e)
{
alpha = 50;
}
4、運行效果
點擊開始按鈕,出現紅色移動的小塊。
點擊半透明按鈕,可以看到紅色小塊開始透明。
點擊透明按鈕,紅色小塊更加透明了。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載