WPF:界面布局之- JexTaiChi

前一段有看到博友用HTML5做了个太极的动画效果,分步骤展示了制作过程,一时兴起遂闲暇之余用WPF 简单用border拼接实现。

前端XAML:

<UserControl x:Class="Jexton.Jtools.JexTaiChi"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             d:DesignHeight="500" d:DesignWidth="500">
    <Border x:Name="Taichi" Margin="20" Width="400" Height="400" CornerRadius="400" RenderTransformOrigin="0.5,0.5">
        <Border.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="0"/>
                <TranslateTransform/>
            </TransformGroup>
        </Border.RenderTransform>
        <Border.Effect>
            <DropShadowEffect ShadowDepth="0" BlurRadius="40" Color="White" Opacity="0.5"></DropShadowEffect>
        </Border.Effect>
        <Grid>
            <!--左边黑半圆-->
            <Border Width="200" Height="400" CornerRadius="200,0,0,200" Background="Black" HorizontalAlignment="Left"></Border>
            <!--右边白半圆-->
            <Border Width="200" Height="400" CornerRadius="0,200,200,0" Background="White" HorizontalAlignment="Right"></Border>
            <!--黑色小半圆-->
            <Border Width="100" Height="200" CornerRadius="0,200,200,0" Background="Black" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="200,0,0,0"></Border>
            <!--白色小半圆-->
            <Border Width="100" Height="200" CornerRadius="200,0,0,200" Background="White" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="100,0,0,0"></Border>
            <!--白色小正圆-->
            <Border Width="50" Height="50" CornerRadius="50" Background="White" VerticalAlignment="Top" Margin="0,75,0,0"></Border>
            <!--黑色小正圆-->
            <Border Width="50" Height="50" CornerRadius="50" Background="Black" VerticalAlignment="Bottom" Margin="0,0,0,75"></Border>
        </Grid>
    </Border>
</UserControl>

至此UI部分完成,接下来还可以让它 ”动“ 起来:

后端代码 :

   ThreadPool.QueueUserWorkItem(new WaitCallback(w=>{
                int Angle = 0;
                while (true)
                {
                    if (Angle == 360) { Angle = 0; }
                    Taichi.Dispatcher.BeginInvoke(new Action(() => {
                        //Taichi
                        TransformGroup group = new TransformGroup();
                        group.Children.Add(new ScaleTransform());
                        group.Children.Add(new SkewTransform());
                        group.Children.Add(new TranslateTransform());
                        group.Children.Add(new RotateTransform(Angle));
                        Taichi.RenderTransform = group;
                    }));
                    Angle = Angle + 10;
                    Thread.Sleep(50);
                }
            }));

写在最后的话:

在WPF中很多复杂图形也是可以使用简单布局元素拼凑出来的。

时间: 2024-11-05 16:11:04

WPF:界面布局之- JexTaiChi的相关文章

彩票软件3)wpf界面布局

捣鼓了好几天,每天看看资料,看看代码,一边玩QQ游戏,玩CS等, 大概每天花费半小时吧,最终弄了这么个界面,自己都觉的丑, 最终面世的时候找个美工搞搞吧. 真是很丑很丑很丑啊 遇到的问题主要是布局 核心就是 控件窗口的大小缩放自动保持布局 搞了好几天,最后发现老简单了, 用 Binding ElementName= 窗口大小 和 HorizontalContentAlignment="Left" VerticalContentAlignment="Top"就解决了

WPF界面布局——各种控件

Grid是最常用的动态布局控件,也是所有动态布局控件中唯一可按比例动态调整分配空间的控件. label : 标签,用来显示文本内容.可以为其他控件如文本框等添加一些描述性的信息. TextBox : 文本框,用于显示或编辑纯文本字符. Button:按钮,允许用户通过单击来执行操作.即可显示文本,又可显示图像.

WPF界面布局——Canvas

Canvas用于定义一个区域,称为画布,用于完全控制每个元素的精确位置.它是布局控件中最为简单的一种,直接将元素放在指定位置,使用Canvas时,必须指定一个子元素的位置(相对于Canvas),否则所有元素都将出现在Canvas的左上角.Canvas的左上角坐标为(0,0),向右为x轴正方向,向下为y轴正方向. 例: 注意: 虽然Canvas用起来相对容易直观,但缺点是无法自动调整大小,因此在一个可变的窗口中,特别是浏览器窗口,用Canvas不是一个明智的选择. 从使用的角度看,由于网络的堆叠面

准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题

题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术的博客.做.Net开发块五年时间,个人没本事,没做出啥成绩.想象偶像梅球王,年龄都差不多,为啥差别就这么大.不甘平庸,想趁机会挑战下其他方面的技术,正好有一个机会转前段开发. 对于目前正在从事或者工作中会用到WPF技术开发的伙伴,此片内容不得不收藏,本片介绍的八个问题都是在WPF开发工作中经常使用到

WPF 之 布局(一)

WPF的布局控件都在 System.Windows.Controls.Panel 这个基类下面,使用 WPF提供的各种控件在WPF应用程序中界面进行布局,同时对各种子控件(如按钮.文本框,下拉框等)进行排列组合. Pane类的公共属性太多了.就简单介绍几个常见的属性如下表. 名称 说明 Cursor 获取或设置在鼠标指针位于此元素上时显示的光标. DataContext 获取或设置元素参与数据绑定时的数据上下文. Dispatcher 获取与此 DispatcherObject 关联的 Disp

WPF UI布局(Layout)

WPF是专门用户界面技术,布局是核心功能之一. 每个布局元素都有自己的特点,要灵活使用. WPF中布局元素有如下: Grid:网格 可以自行定义行和列并通过行列的数量.行高和列宽来调整布局.类似Table. Grid具有ColumnDefinitions和RowDefinitions属性,它们分别是ColumnDefinition和RowDefinition的集合, 表示Grid定义了多少行多少列. StackPanel:栈式面板 可以将包含的元素在垂直或水平方向上排成一条直线,移除前一个元素后

CDockablePane 记忆界面布局的问题

CWinAppEx类的LoadCustomState()和SaveCustomState()用于向注册表读取和保存应用程序的界面信息,重载该方法可以取消自动记忆界面布局. void CxxxApp::LoadCustomState() {     //设置为TRUE,则自动加载界面记忆     this->m_bSaveState = FALSE; } //保存界面状态值 void CxxxApp::SaveCustomState() {     //设置为TRUE,则自动保存界面记忆     

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

iOS界面布局的核心以及TangramKit介绍

前言 TangramKit是iOS系统下用Swift编写的第三方界面布局框架.他集成了iOS的AutoLayout和SizeClass以及Android的五大容器布局体系以及HTML/CSS中的float和flex-box的布局功能和思想,目的是为iOS开发人员提供一套功能强大.多屏幕灵活适配.简单易用的UI布局解决方案.Tangram的中文即七巧板的意思,取名的寓意表明这个布局库可以非常灵巧和简单的解决各种复杂界面布局问题.他的同胞框架:MyLayout是一套用objective-C实现的界面