首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

第一篇:Balder之基础模型Ring戒指使用

2012-10-07 
第一篇:Balder之基础模型Ring指环使用由于sliverlight4,还没有对3D支持。幸好有第三方的组件Balder能够处理

第一篇:Balder之基础模型Ring指环使用

由于sliverlight4,还没有对3D支持。幸好有第三方的组件Balder能够处理3D的效果。

?

?

1、添加Silverlight用户控件名为:RingDemo.xaml

?

??界面代码如下:

<UserControl x:d:DesignWidth="400"        xmlns:Geometries="clr-namespace:Balder.Objects.Geometries;assembly=Balder"    xmlns:Lighting="clr-namespace:Balder.Lighting;assembly=Balder"     xmlns:Execution="clr-namespace:Balder.Execution;assembly=Balder"     xmlns:View="clr-namespace:Balder.View;assembly=Balder"    xmlns:my="clr-namespace:Balder.Math;assembly=Balder"    xmlns:Debug="clr-namespace:Balder.Debug;assembly=Balder">    <Grid x:Name="LayoutRoot" >        <Execution:Game Width="400" Height="300">            <Execution:Game.DebugInfo>                <Debug:DebugInfo ShowVertices="False"/>            </Execution:Game.DebugInfo>            <Execution:Game.Camera>                <View:Camera>                    <View:Camera.Position>                        <my:Coordinate  Y="100" X="0" Z="0"></my:Coordinate>                    </View:Camera.Position>                </View:Camera>            </Execution:Game.Camera>            <Lighting:OmniLight Position="-100,100,0" />            <Geometries:Ring x:Name="Ring" InnerRadius="10"  OuterRadius="30" Size="20"/>        </Execution:Game>        <!--指环形状控制-->        <Grid HorizontalAlignment="Left" VerticalAlignment="Top">            <Grid.ColumnDefinitions>                <ColumnDefinition Width="100"/>                <ColumnDefinition Width="200" />                <ColumnDefinition Width="30"/>            </Grid.ColumnDefinitions>            <Grid.RowDefinitions>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>                <RowDefinition Height="30"/>            </Grid.RowDefinitions>            <!--控制指环开始段-->            <TextBlock Text="开始段:" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" />            <Slider x:Name="SliderStart" Grid.Column="1" Grid.Row="0" Minimum="0" Maximum="360" Value="0" ValueChanged="SliderStart_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderStart}" Grid.Column="2" Grid.Row="0"/>            <!--控制指环结束段-->            <TextBlock Text="结束段:" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" />            <Slider x:Name="SliderEnd" Grid.Column="1" Grid.Row="1" Minimum="0" Maximum="360" Value="0" ValueChanged="SliderEnd_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderEnd}" Grid.Column="2" Grid.Row="1"/>            <!--控制指环几个面-->            <TextBlock Text="几面:" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" />            <Slider x:Name="SliderSegments" Grid.Column="1" Grid.Row="2" Minimum="3" Maximum="50" Value="50" ValueChanged="SliderSegments_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderSegments}" Grid.Column="2" Grid.Row="2"/>            <!--控制指环内半径-->            <TextBlock Text="内半径:" Grid.Column="0" Grid.Row="3" VerticalAlignment="Center" />            <Slider x:Name="SliderInnerRadius" Grid.Column="1" Grid.Row="3" Minimum="1" Maximum="40" Value="10" ValueChanged="SliderInnerRadius_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderInnerRadius}" Grid.Column="2" Grid.Row="3"/>            <!--控制指环外半径-->            <TextBlock Text="外半径:" Grid.Column="0" Grid.Row="4" VerticalAlignment="Center" />            <Slider x:Name="SliderOuterRadius" Grid.Column="1" Grid.Row="4" Minimum="2" Maximum="41" Value="30" ValueChanged="SliderOuterRadius_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderOuterRadius}" Grid.Column="2" Grid.Row="4"/>            <!--控制指环长度-->            <TextBlock Text="长度:" Grid.Column="0" Grid.Row="5" VerticalAlignment="Center" />            <Slider x:Name="SliderSize" Grid.Column="1" Grid.Row="5" Minimum="1" Maximum="100" Value="30" ValueChanged="SliderSize_ValueChanged" />            <TextBlock Text="{Binding Value,ElementName=SliderSize}" Grid.Column="2" Grid.Row="5"/>        </Grid>    </Grid></UserControl>

?

? 后台代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;namespace BalderDemo{    public partial class RingDemo : UserControl    {       /*        * 概述:        * 制作一个3D指环,并且展示指环的相关操作。        *         *         * 注意事项:        *  1、指环的园柱的测面不能少于3个面。        *  2、指环的开始断不能大于结束段。        *  3、指环的内半径不能大于等于外半径,内半径的长度不能小于0。        */        public RingDemo()        {            InitializeComponent();            Loaded += RingDemo_Loaded;        }        /// <summary>        /// 是否加载完成        /// </summary>        bool _bLoaded = false;        void RingDemo_Loaded(object sender, RoutedEventArgs e)        {            UpdateProperties();            _bLoaded = true;        }        //初始化参数        private void UpdateProperties()        {            Ring.StartAngle = SliderStart.Value;            Ring.EndAngle = SliderEnd.Value;            Ring.Segments = (int)SliderSegments.Value;            Ring.InnerRadius = SliderInnerRadius.Value;            Ring.OuterRadius = SliderOuterRadius.Value;        }        //开始段值改变事件        private void SliderStart_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            //开始段不能大于结束段            if (SliderStart.Value - SliderEnd.Value > 0)            {                Ring.EndAngle = SliderStart.Value;                SliderEnd.Value = SliderStart.Value;            }            Ring.StartAngle = SliderStart.Value;        }        //结束段值改变事件        private void SliderEnd_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            //开始段不能大于结束段            if (SliderStart.Value - SliderEnd.Value > 0)            {                Ring.StartAngle = SliderEnd.Value;                SliderStart.Value = SliderEnd.Value;            }            Ring.EndAngle = SliderEnd.Value;        }        //外半径改变事件        private void SliderOuterRadius_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            //内半径不能大于外半径            if (SliderInnerRadius.Value - SliderOuterRadius.Value > 0)            {                Ring.InnerRadius = SliderOuterRadius.Value - 0.1;                SliderInnerRadius.Value = SliderOuterRadius.Value - 0.1;            }            Ring.OuterRadius = SliderOuterRadius.Value;        }        //内半径改变事件        private void SliderInnerRadius_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            //内半径不能大于外半径            if (SliderInnerRadius.Value - SliderOuterRadius.Value > 0)            {                Ring.OuterRadius = SliderInnerRadius.Value + 0.1;                SliderOuterRadius.Value = SliderInnerRadius.Value + 0.1;            }            Ring.InnerRadius = SliderInnerRadius.Value;        }        //指环面改变事件        private void SliderSegments_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            Ring.Segments = (int)SliderSegments.Value;        }        /// <summary>        /// 指环的透明度        /// </summary>        private void SliderOpacity_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {        }        /// <summary>        /// 指环的透明度        /// </summary>        private void SliderSize_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)        {            if (!_bLoaded)            {                return;            }            Ring.Size = (int)SliderSize.Value;        }    }}

?

热点排行