RectAnimation用于在DrawingVisual画进度条

使用Visual来画图,可以使用其派生类,UIElement、Viewport3DVisual用于呈现3D内容,其他可以用来画图的为DrawingVisual,使用DrawingVisual可以使用编程的方式来实现复杂的图形实现,当使用DrawingVisual,必须使用FrameworkElement作为宿主容器,用来提供DrawingVisual所缺乏的布局和事件支持。下面实现了使用DrawingVisual来实现进度条,主要使用RectAnimation来实现。DrawRoundedRectangle(Brush
brush, Pen pen, Rect rectangle, AnimationClock rectangleAnimations, double
radiusX, AnimationClock radiusXAnimations, double radiusY, AnimationClock
radiusYAnimations)方法的使用RectAnimation对象的AnimationClock对 Rec进行动画处理。


        RectAnimation myRectAnimation;
public override System.Windows.Media.Visual drawShape()
{
DrawingVisual drawingWordsVisual = new DrawingVisual();
DrawingContext drawingContext = drawingWordsVisual.RenderOpen();
try
{
Rect rect2 = new Rect(currentLayout.StartPoint.X,
                        currentLayout.StartPoint.Y, VisusalSize.Width, 3);
Rect rect3 = new Rect(currentLayout.StartPoint.X,
                        currentLayout.StartPoint.Y, VisusalSize.Width, 3);

Rect rect1 = new Rect(currentLayout.StartPoint.X, currentLayout.StartPoint.Y, 0, 3);
//Rect rect4 = new Rect(currentLayout.StartPoint.X, currentLayout.StartPoint.Y, VisusalSize.Width*0.5, 0);

myRectAnimation = new RectAnimation();

myRectAnimation.Duration = TimeSpan.FromSeconds(10);
myRectAnimation.FillBehavior = FillBehavior.HoldEnd;

myRectAnimation.From = rect1;
//myRectAnimation.By = rect4;
myRectAnimation.To = rect3;

_showFilePanelClock = myRectAnimation.CreateClock();

_showFilePanelClock.Controller.Pause();

GradientStop gs1 = new GradientStop(Color.FromRgb(49, 158,

                        222), 1);
GradientStop gs2 = new GradientStop(Color.FromRgb(69, 182,
                        233), 1);
GradientStopCollection gsc = new GradientStopCollection();
gsc.Add(gs1);
gsc.Add(gs2);
Brush colorbrush = new LinearGradientBrush(gsc,
                         new Point(0, 1), new Point(0, 0.8));
Brush solidBrush = new SolidColorBrush(Color.FromRgb(203,
                        203, 203));
drawingContext.DrawRectangle(solidBrush, new Pen(), rect2);
drawingContext.DrawRoundedRectangle(colorbrush, new Pen(),
                        rect1, _showFilePanelClock, 2, null, 2, null);
}
catch (Exception ex)
{
new SaveExceptionInfo().SaveLogAsTXTInfoex(ex.Message);
}
finally
{
drawingContext.Close();
}
return drawingWordsVisual;
}

使用下面的方法来控制进度条的进度,根据要显示的百分比,使用ClockController.Seek来控制进度条的进度。


public void FilesavedSize_saveSizeChanged(object sender, SendFileEventArgs args)
{
double percent = double.Parse(args.SavedSize.ToString())
             / double.Parse(args.FileSize.ToString());
TimeSpan timeSpan = TimeSpan.FromMilliseconds(percent * 10000);
_showFilePanelClock.Controller.Seek(timeSpan,
              TimeSeekOrigin.BeginTime);
_showFilePanelClock.Controller.Pause();
}

RectAnimation用于在DrawingVisual画进度条,布布扣,bubuko.com

时间: 2024-10-24 07:31:42

RectAnimation用于在DrawingVisual画进度条的相关文章

MFC进度条的美化

内容介绍:创建自绘进度条,并在进度条上显示当前进度的百分比. 第一步:创建基于对话框的工程,在对话框中放置一个进度条控件, 把进度条控件的属性Smooth设置为真. 第二步: [1]添加基于进度条CProgressCtrl控件新类CMyProCtrl; [2]为CMyProCtrl类添加WM_PAINT消息 [3]为CMyProCtrl类添加public变量如下: COLORREF m_ColText;//文本颜色 COLORREF m_ColProgress;//进度条颜色 COLORREF 

android113 自定义进度条

MainActivity: package com.itheima.monitor; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.ProgressBar; public class MainActivity extends Activity { private MyProgressBa

HTML5简单进度条插件

今天学习了HTML5画线条,于是有了做一个简单进度条的插件的想法 先来一个实例 下面是html代码 <div> <canvas id="canvas"></canvas> </div> 然后js配置参数 var setting = { id: "canvas",//画布id 不可省略 width: 40,//进度条高度 可省略 time: 100,//进度刷新时间间隔 可省略 默认为1000毫秒 color: &quo

HTML5 Canvas绘制环形进度条

最近比较迷恋canvas,加之做了一个个人网站,有用到环形进度条,记录下来. canvas中没有直接绘制圆的方法,但有一个绘制弧线的context.arc方法, 下面讲下用该方法如何绘制出图片效果. arc()方法介绍 context.arc(x,y,r,sAngle,eAngle,counterclockwise); 参数说明: x: 圆的中心的 x 坐标 y: 圆的中心的 y 坐标 r: 圆的半径 sAngle: 起始角,以弧度计.(弧的圆形的三点钟位置是 0 度) eAngle: 结束角,

iOS Quartz2D模拟下载进度条

效果图: 步骤: 1.在StoryBoard中拖入一个控制器添加UISlider和UIView 2个控件 2.在控制器中连线监听UISlider的值变化事件.HJProgressView属性,把变化的值传递给自定义UIView 3.自定义HJProgressView重写progressValue属性set方法,重绘视图中得文字和弧度值 控制器代码: #import "ViewController.h" #import "HJProgressView.h" @inte

QStandardItemModel简单好用,QTableView带进度条

类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据.与此不同,类QStandardItemModel负责保存数据,每个数据项被表示为类QStandardItem的对象.我们首先阐述如何使用类QStandardItem保存一个数据项,再阐述如何使用类QStandardItemModel将这些数据项组织起来,形成列表.表格或者树,以供其他视图类显示. 理论参考

CProgressCtrl进度条

CProgressCtrl进度条 使用方法总结 标签: CProgressCtrlmfc 2016-03-03 09:19 762人阅读 评论(0) 收藏 举报  分类: MFC(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] CProgressCtrl 控件属性 当我们在处理大程序时,常常需要耗很长时间(比如搜索内存,复制大文件),为了不让用户错误的认为系统已经死机,我们要给程序添加进度条. CProgressCtrl 类常用成员函数 SetRange voi

CProgressCtrl进度条控

CProgressCtrl常用属性 CProgressCtrl类常用成员函数 CProgressCtrl代码示例   一.CProgressCtrl控件属性 当我们在处理大程序时,常常需要耗很长时间(比如搜索内存,复制大文件),为了不让用户错误的认为系统已经死机,我们要给程序添加进度条. vertical :是否垂直显示. smooth :平滑过度,不显示进度方块.可以显示更细致. 二.CProgressCtrl类常用成员函数   SetRange void SetRange( short nL

自定义进度条PictureProgressBar——从开发到开源发布全过程

自定义进度条PictureProgressBar--从开发到开源发布全过程 出处: 炎之铠邮箱:[email protected] 本文原创,转载请注明本出处! 本项目JCenter地址:https://bintray.com/yanzhikaijky/CustomViewRepository/PictureProgressbar/ 本项目GitHub地址:https://github.com/totond/PictureProgressBar 欢迎 Star or Fork和在Issue里提出