zoukankan      html  css  js  c++  java
  • 最近在一个*的网站,困扰了我多天的循环和大家分享下,也做为我以后工作之用.第一种(信息作用循环.实现方式后台时钟在前台循环滚动(左右)显示).

    为了方便初学者我把实验代码的源码都公布了出来.

    前台页面:

    <UserControl x:Class="listScroll.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">

        <Canvas Name="canMain" Width="300"  Height="300">
            <TextBlock Name="tbmarquee"></TextBlock><!--  用于循环信息显示之用-->
        </Canvas>

    <!--  呈现自元素的容器 -->

    </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 listScroll
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(MainPage_Loaded);
            }

            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {

    //产生时钟的模拟操作,同时把时间赋值给前台显示控件
                this.tbmarquee.Text = string.Concat("TimerWindow ", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                TopToBottomMarquee();
            }
            private void TopToBottomMarquee()
            {

        // 定义一个矩形,把循环的信息放在矩形中.
                RectangleGeometry rectangleGeometry = new RectangleGeometry();
                rectangleGeometry.Rect = new Rect(new Point(0, 0), new Size(canMain.Width, canMain.Height));
                canMain.Clip = rectangleGeometry;
                double width = canMain.Width - tbmarquee.ActualWidth;
                double jleft = width/2;
                tbmarquee.Margin = new Thickness(jleft, 0, 0, 0);
                DoubleAnimation doubleAnimation = new DoubleAnimation();
                doubleAnimation.From = -tbmarquee.ActualHeight;
                doubleAnimation.To = canMain.Height;
                doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
                doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(1)); //循环时间
                Storyboard storyboard = new Storyboard();
                storyboard.Children.Add(doubleAnimation);
                Storyboard.SetTarget(doubleAnimation, tbmarquee);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)"));//Canvas.Top:上下信息循环显示,Canvas.Left :信息左右循环显示

              storyboard.Begin();
            }
        }
    }

    如果转载请说明出处.

  • 相关阅读:
    简单工厂,工厂方法和抽象工厂
    谈谈类之间的关联关系与依赖关系(转载)
    redis-cli 命令操作 Redis 五种数据类型
    深入分析java中的反射机制
    深入分析Java中String、StringBuilder、StringBuffer的区别
    String类型为什么设计成不可变的?
    java集合系列(5)LinkedList
    java集合系列(4)fail-fast机制(面试常问)
    java集合系列(3)ArrayList
    java集合系列(2)collection
  • 原文地址:https://www.cnblogs.com/northeastTycoon/p/2254846.html
Copyright © 2011-2022 走看看