PB能不能做成类似与跑马灯效果这样的效果

Wpf跑马灯——DrawingVisual运用 - 影天 - 博客园
随笔 - 65, 文章 - 4, 评论 - 15, 引用 - 0
本文将建立一个wpf项目中运用DrawingVisual绘制跑马灯效果的简单实例,以下是详细步骤:
新建一个wpf项目,添加演示用图片,修改图片属性为"如果较新则复制"。
在MainWindow.xaml中,为系统自动创建的Grid容器命名,这样可以在后台操作的到它。
&Window x:Class="WpfPicRoll.MainWindow"
xmlns="/winfx/2006/xaml/presentation"
xmlns:x="/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"&
&Grid Name="gd_main"&&/Grid&&/Window&
在后台代码中,添加窗体布局。
public MainWindow()
InitializeComponent();
this.WindowLayout();
Image img_roll = new Image();
void WindowLayout()
this.WindowStartupLocation = WindowStartupLocation.CenterS
this.Width = 300;
this.Height = 300;
img_roll.Margin = new Thickness(10, 10, 0, 0);
img_roll.HorizontalAlignment = HorizontalAlignment.L
img_roll.VerticalAlignment = VerticalAlignment.T
img_roll.Stretch = Stretch.F
img_roll.Width = 200;
img_roll.Height = 200;
img_roll.Source = new BitmapImage(new Uri(@"Images\bg.jpg", UriKind.Relative));
this.gd_main.Children.Add(img_roll);
private void Window_Loaded(object sender, RoutedEventArgs e)
this.InitPicRoll();
这里使用一个Image控件作为演示区域,背景图片可有可无。
完成初始化滚动事件InitPicRoll,
List&BitmapImage& ls_images = new List&BitmapImage&(); //存放图片组
DispatcherTimer t_remain = new DispatcherTimer(); //切换
DispatcherTimer t_roll = new DispatcherTimer();
int n_index = 0;
//滚动索引
//滚动高度
//滚动宽度
//滚动上边距
void InitPicRoll()
string[] img_files = Directory.GetFiles(string.Format("{0}/Images", AppDomain.CurrentDomain.SetupInformation.ApplicationBase), "*.png");
foreach (string img_path in img_files)
ls_images.Add(new BitmapImage(new Uri(img_path, UriKind.Absolute)));
n_height = img_roll.H
n_width = img_roll.W
t_remain.Interval = new TimeSpan(0, 0, 5);
t_remain.Tick += new EventHandler(t_remain_Tick);
t_roll.Interval = new TimeSpan(0, 0, 0, 0, 30);
t_roll.Tick += new EventHandler(t_roll_Tick);
t_remain.Start();
t_roll.Start();
wpf较winform中的用法有一些不同之处,例如:
获取程序启动路径:在winform中可以使用Application.StartupPath,在wpf中可以使用AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
获取一张图片素材:在winform中可以使用Image.FromFile(img_path)的方法获取一个Image文件,在wpf中Image将作为一个显示用控件出现,可以使用new BitmapImage(new Uri(img_path, UriKind.Absolute))方法,将图片素材文件保存为一个bitmap,这里的img_path素材路径需要指明UriKind是相对还是绝对路径;
使用时钟:在winform中可以new 一个Timer时钟,但是在wpf中却没有Timer,在wpf中可以new 一个DispatcherTimer,可以代替Timer完成我们需要的工作。
下面完成图片切换时钟t_remain和滚动控制时钟t_roll,代码如下:
void t_remain_Tick(object sender, EventArgs e)
n_index = ++n_index % ls_images.C
n_top = 0;
t_roll.Start();
void t_roll_Tick(object sender, EventArgs e)
n_top -= 5;
if (n_top &= -n_height)
t_roll.Stop();
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
for (int i = 0; i & 2; i++)
drawingContext.DrawImage(ls_images[(n_index + i) % ls_images.Count()], new Rect(0, n_top + i * n_height, 200, 200));
drawingContext.Close();
RenderTargetBitmap composeImage = new RenderTargetBitmap(200, 200, 0, 0, PixelFormats.Pbgra32);
composeImage.Render(drawingVisual);
img_roll.Source = composeI
注意到我们在winform中可以使用Graphics画笔来Draw一个Image,在wpf中我们可以使用DrawingVisual来代替,DrawingVisual是一个绘图类,当你new 一个DrawingVisual对象时,该对象并没有绘图内容,需要使用DrawingContext在其中进行绘制,步骤为:
1.new DrawingVisual.
2.调用DrawingVisual的RenderOpen方法,new DrawingContext.
3.使用DrawingContext来完成绘制动作.
4.调用DrawingContext的Close方法并保存内容.
5.new RenderTargetBitmap用作呈现.
6.调用RenderTargetBitmap的Render方法呈现已经完成绘制动作的DrawingVisual.
重新生成项目,F5运行,效果如下:君,已阅读到文档的结尾了呢~~
ALIENTEK 战舰STM32开发板,配套教程 50多个库函数实例,800页手册讲解,手册名字叫《STM32开发指南》,大家可以到开源电子网下载。配套书本北航出版社即将出版。
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
第六章跑马灯实验战舰STM32开发板
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口基于8255扩展的多模式跑马灯设计_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于8255扩展的多模式跑马灯设计
上传于|0|0|文档简介
&&8255扩展
多模式跑马灯设计
论文完整版
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢《STM32开发指南》第六章 跑马灯实验_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
《STM32开发指南》第六章 跑马灯实验
上传于|0|0|文档简介
&&介绍STM32普通IO口的基本使用。利用STM32的普通IO口,驱动LED灯闪烁,最基础的入门实验。
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 js 做成类似图库 的文章

 

随机推荐