轉(zhuǎn)帖|其它|編輯:郝浩|2011-06-07 13:53:59.000|閱讀 1062 次
概述:上一篇博客提到XNA可以在Silverlight中繪制資源,但是,一旦一個Silverlight頁面由XNA接管后,就無法直接顯示頁面上的控件了,這樣就無法體現(xiàn)Silverlight與XNA的優(yōu)勢了,為了解決這個問題,實現(xiàn)Silverlight與XNA混合調(diào)用,windows phone7.1又提供了一個新的UIElementRender類。通過這個類來加載所要繪制的控件。以下是一個示例工程。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
上一篇博客提到XNA可以在Silverlight中繪制資源,但是,一旦一個Silverlight頁面由XNA接管后,就無法直接顯示頁面上的控件了,這樣就無法體現(xiàn)Silverlight與XNA的優(yōu)勢了,為了解決這個問題,實現(xiàn)Silverlight與XNA混合調(diào)用,windows phone7.1又提供了一個新的UIElementRender類。通過這個類來加載所要繪制的控件。以下是一個示例工程。
1、 首先同樣要先使用3d模板創(chuàng)建一個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);
在這個事件的響應(yīng)函數(shù)中初始化UIElementRenderer實例,這時將整個頁面做為rootElement renderer = new UIElementRenderer(this, (int)ActualWidth, (int)ActualHeight);
繪制這個實例
if(IsStart)
spriteBatch.Draw(texture, spritePosition, new Color(255, 255, 255, alpha));
按鈕執(zhí)行的效果代碼
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、運行效果
點擊開始按鈕,出現(xiàn)紅色移動的小塊。
點擊半透明按鈕,可以看到紅色小塊開始透明。
點擊透明按鈕,紅色小塊更加透明了。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載