WPF 画心2.0版之元旦快乐
2017年元旦已经到了,想做一个祝福语的窗口,就把上一篇画心的程序改了改,变成了如下界面。

说下改动的地方,首先窗口没有标题栏了。
MainWindow.xaml
AllowsTransparency="True"
MouseDoubleClick="Window_MouseDoubleClick"
WindowStyle="None" Background="#00FFFFFF" Loaded="Window_Loaded" MouseMove="Window_MouseMove"
Title="MainWindow" Height="" Width=""
中间圆形按钮的样式
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Width="" Height="">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="" Color="blue"/>
<GradientStop Offset="" Color="LightBlue"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Ellipse Width="" Height="">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="" Color="White"/>
<GradientStop Offset="" Color="Transparent"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentControl VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"
FontSize="" FontWeight="Bold" Foreground="Red"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
虽然没有了标题栏,为了能够让窗口自由移动
private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
this.DragMove();
}
}
双击鼠标,关闭窗口
private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
this.Close();
}
不再使用线程睡眠的方式来动态显示心的生成,这次采用计时器。
private DispatcherTimer timer = new DispatcherTimer();//创建定时器对象
public MainWindow()
{
InitializeComponent();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
this.bendediction.Content = "2017年\r\n元旦快乐";
timer.Tick += new EventHandler(timer_Tick); //添加事件,定时到事件
timer.Interval = TimeSpan.FromMilliseconds(100);//设置定时长
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
if (iTick < maxStep)
{
CreateHeartLine(iTick);
}
else
{
timer.Stop();
}
iTick++;
}
本次心的生成算法,基本不变,只是把心的半径和位置调整了下。
private void CreateHeartLine(int iTick)
{
centerPt = canvas_Shape.Width/ ;
radius = canvas_Shape.Width / ;
for (int i = ; i < iTick; i++)
{
System.Windows.Controls.Image img = new System.Windows.Controls.Image(); img.Source = new BitmapImage(new Uri(@"image/" + + ".png", UriKind.Relative));//给出照片路径
img.Height = ;
img.Width = ;
img.Stretch = Stretch.Fill; double angle = * Math.PI / maxStep * i; //桃形心
double x = centerPt - * (Math.Sin(angle) * Math.Sin(angle) * Math.Sin(angle)) * ;//
double y = centerPt - ( * Math.Cos(angle) - * Math.Cos( * angle) - * Math.Cos( * angle) - Math.Cos( * angle)) * ;//
Canvas.SetLeft(img, x);
Canvas.SetTop(img, y);
canvas_Shape.Children.Add(img);
}
}
为了添加背景音乐,使用了MediaElement。
private void Window_Loaded(object sender, RoutedEventArgs e)
{ me.LoadedBehavior = MediaState.Manual; //设置为手动控制
me.UnloadedBehavior = MediaState.Manual;
string strPath = string.Format(@"{0}\data\music\bk.mp3", System.Windows.Forms.Application.StartupPath);
Uri uri = new Uri(strPath, UriKind.Relative);
me.Source = uri; me.IsHitTestVisible = true;
me.MediaEnded += new RoutedEventHandler(me_MediaEnded);
gd.Children.Add(me);
me.Play();
}
为了能够循环播放
private void me_MediaEnded(object sender, RoutedEventArgs e)
{
me.Stop();
me.Play();
}
WPF 画心2.0版之元旦快乐的更多相关文章
- 基于DDDLite的权限管理OpenAuth.net 1.0版正式发布
距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里 ...
- [转载]我的Java后端书架 (2016年暖冬4.0版)
[转载]我的Java后端书架 (2016年暖冬4.0版) ps:最近正在初学Java,有一些其他语言的底子,但是还是要好好看书,好好练习,网上找了好久,都没有这份书单来的实用,特意转载过来,方便以 ...
- 不同编程语言打印“元旦快乐!"
javascript: document.write("元旦快乐!"+"<br/>"); PHP: <?php echo "元旦快乐 ...
- UrlPager免费分页控件2.0版发布!
UrlPager是一个ASP.NET WebForm应用程序中通过url进行分页的分页控件,支持使用url路由来生成自定义的分页url.与AspNetPager不同,UrlPager需.NET Fra ...
- MvcPager 免费开源分页控件3.0版发布!
MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大 ...
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- bootstrap 2.3版与3.0版的使用区别
bootstrap 2.3版与3.0版的使用区别 bootstrap已经推出了3.0的新版,看起来2.3.x版本也不会再更新了.那么bootstrap 2.3版与3.0版的区别在哪里呢?下面我们就来介 ...
- SWFUpload 2.5.0版 官方说明文档 中文翻译版
原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2 ...
- 我的Java后端书架 (2016年暮春3.0版)
04月 24, 2016 | Filed under 技术 http://calvin1978.blogcn.com/articles/javabookshelf.html 书架主要针对Java后 ...
随机推荐
- 前端神器avalonJS入门(一)
转自:http://www.cnblogs.com/vajoy/p/4063824.html avalonJS是司徒正美开发和维护的前端mvvm框架,可以轻松实现数据的隔离和双向绑定,相比angula ...
- jQuery文件上传插件Uploadify(转)
一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...
- java重置定时器频率
public class BallUtil { public static Timer fisTimer ; public static void fisStartBall(){ long first ...
- shell命令find
概述 find命令的工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作. 选项 -print:指明打印出匹配文件的文件名(路径).当使用-print时,'\n'作为用于分隔文件的 ...
- jquery实现input输入框实时输入触发事件代码(点击历史记录也会触发)
$("#email").bind('input propertychange', function() { if(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0 ...
- leetcode
Coding on LeetCode Online Judge leetcode(leetcode website) Problems algorithms 13. Roman to Integer ...
- href,src,url 整理
一.href 和 src 的定义及区别 href:Hypertext Reference(超文本引用),指定网络资源的位置,从而在当前元素或者当前文档和由当前属性定义的需要的锚点或资源之间定义一个链接 ...
- 脚手架搭建的vue项目里引入jquery和bootstrap
引入jquery: 1.在cmd输入:npm install jquery,回车,等待.. 2.在webpack.base.conf.js里进行如下操作: 3.在webpack.prod.conf.j ...
- Matlab编程知识点
容易忘记的小知识点: Matlab程序首行程序: clear:close all:clc:程序运行开始最好清理下之前残留的各种数据,不然matlab可能会出错. clear(清理变量空间),close ...
- 【04-10】java中的路径
java中的路径 System.getProperty("user.dir") 获取工程的绝对路径 Class.class.getClass().getResource(&quo ...