C# WPF 时钟动画(2/2)

原文:C#WPF时钟动画(2/2)模拟实现时钟效果,学习WPF动画好例子,本文承接上文C#WPF时钟动画(1/2)。微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言,如果对您有所帮助:欢迎赞赏。内容目录实现效果业务场景编码实现本文参考源码下载时钟实时展示系统本机时间模拟时钟使用.NetCore3.1创建名为“Clock”的WPF解决方案,解决方案中需要添加时钟背景图片,图片如下:https://github.com/Abel13/Clock/blob/master/Clock/Assets/clock.png3.1主窗体MainWindow.xaml使用3个Border布局时钟的时针、分针、秒针,并给3个指针添加动画,动画说明如下:时针每12个小时循环一圈(360°),每个小时旋转30°(30°*12=360°);分针每60分钟循环一圈(360°),每分钟旋转6°(6°*60=360°);秒针每60秒循环一圈(360°),每秒钟旋转6°(6°*60=360°),并且秒针旋转6°有个轻微的摆动动画。<Windowx:Class="Clock.MainWind...
代码星球 代码星球·2020-04-03

C# WPF 时钟动画(1/2)

原文:C#WPF时钟动画(1/2)微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言,如果对您有所帮助:欢迎赞赏。内容目录实现效果业务场景编码实现本文参考源码下载目前只实现了秒针动画,下篇文章实现完整效果,可在网站上查看,微信公众号今天只发布了一篇。效果玩具工程简单,只更改一个主窗体文件,另加一个时钟背景图片3.1主窗体MainWindow.xaml布局时钟的时针、分针、秒针,及添加秒针动画,秒针动画写的比较啰嗦,只写了30秒,其实可以在MainWindow.xaml.cs文件中用for循环添加EasingDoubleKeyFrame,直接添加到xaml中占代码也不美观,暂时先这样吧,下篇文章有空改了。<Windowx:Class="Clock.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.micro...
代码星球 代码星球·2020-04-03

wpf读取网络图片:

原文:wpf读取网络图片:项目发布之后,图片保存到服务器(成为网络图片):读取方法如下面所示:wpf读取网络图片:privatevoidViewImage(stringfileUri){BitmapImagebitImage=newBitmapImage();bitImage.BeginInit();bitImage.UriSource=newUri(fileUri,UriKind.Absolute);bitImage.DecodePixelWidth=300;bitImage.EndInit();imgView.Source=bitImage;}...
代码星球 代码星球·2020-04-03

WPF MVVM COMMOND 传参

原文:WPFMVVMCOMMOND传参一、直接绑定(对于有事件的控件可以通过直接绑定的方式)1、view<hc:SideMenuItemHeader="接谈中"Cursor="Hand"Command="{BindingAddTabItemCommand}"CommandParameter="PDjtList.xaml"><hc:SideMenuItem.Icon><ImageSource="/Images/icons/jtz.png"Width="24"Height="24"/></hc:SideMenuItem.Icon></hc:SideMenuItem>2、viewmodel///<summary>///命令:传递参数///</summary>publicRelayCommand<string>AddTabItemCommand=>newLazy<RelayCommand<string>>(()=>newRelayCommand<string...
代码星球 代码星球·2020-04-03

WPF 菜单事件绑定 DataTemplate下button Command事件绑定 DataTemplate遍历实体数据

原文:WPF菜单事件绑定DataTemplate下buttonCommand事件绑定DataTemplate遍历实体数据一、菜单编写不要使用listbox,listbox只有selectchanged事件,没有点击事件,会导致,点相同菜单没有触发事件的情况1、引用部分增加“Name="frmWorkstation" ”2、绑定command时候,必须写成<ButtonCommand="{BindingDataContext.AddTabItemCommand,ElementName=frmWorkstation}"CommandParameter="{BindingParam}",否则ItemTemplate的DataContext指代不明,需要改为父类的DataContext。<ItemsControlItemsSource="{BindingMenuList}"><ItemsControl.ItemTemplate><DataTemplate><ButtonCommand="{BindingDataContext.AddTa...

WPF MVVM 子页面控制主窗体新增tab页面

原文:WPFMVVM子页面控制主窗体新增tab页面一、方案利用viewmodel之间消息传递方式二、子页面1、view.xaml<ButtonContent="接谈"Command="{BindingDataContext.JtCommand,RelativeSource={RelativeSourceMode=FindAncestor,AncestorType=DataGrid}}"hljs-string">"{StaticResourceButtonSuccess}"CommandParameter="{BindingParam}"Cursor="Hand"/>2、viewmodelpublicRelayCommand<string>JtCommand=>newLazy<RelayCommand<string>>(()=>newRelayCommand<string>(Jt)).Value;privatevoidJt(stringparam){SendInfo=param;//消息传递给PindexModel接...

wpf mvvm ViewModel如何关闭view窗口

原文:wpfmvvmViewModel如何关闭view窗口最近用wpf开发一客户端(MVVM),需要增加登陆窗口,登陆成功后关闭登陆窗口。废话少说进入正题。原理:通过CommandParameter传递窗口对象,再调用Close()关闭view窗口请先安装:prism4(http://compositewpf.codeplex.com/releases)BlendWPFSDK(https://www.microsoft.com/zh-cn/download/details.aspx?id=10801)引用 Microsoft.Practices.Prismxaml中的代码:<!--*****方法一:LoginCommand:ViewModel中实现的Command****************************--><ButtonContent="登陆"Height="30"Width="100"Command="{BindingLoginCommand}"CommandParameter="{BindingRelativeSource={Relat...

WPF MVVM 关闭当前窗体 打开新的窗体

原文:WPFMVVM关闭当前窗体打开新的窗体登录成功窗体切换1、xaml点击事件将登录页面某个控件带回至ViewModel<ButtonContent="登录"Command="{BindingLoginCommand}"CommandParameter="{BindingElementName=pb_password}"Margin="30,10"Width="286"Height="40"hljs-string">"{StaticResourceButtonPrimary}"/>2、viewmodel///<summary>///登录事件///</summary>publicRelayCommand<System.Windows.Controls.PasswordBox>LoginCommand=>newLazy<RelayCommand<System.Windows.Controls.PasswordBox>>(()=>newRelayCommand<System.Windows.Contr...

WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界

原文:WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界最近在项目中遇到WPF弹出窗体只能在屏幕内移动的需求,使用WndProc截获系统消息、ClipCursorAPI函数控制鼠标可用区域解决了问题,特意记录以备后用。12publicpartialclassMainWindow:Window{privatePOINT_mouseDownPos;privatebool_move;[DllImport("user32.dll")]publicstaticexternboolClipCursor(refRECTlpRect);[DllImport("user32.dll",CharSet=CharSet.Auto)]publicstaticexternboolGetCursorPos(outPOINTpt);publicMainWindow(){InitializeComponent();}protectedoverridevoidOnSourceInitialized(EventArgse){base.OnSourceInitialized(e);HwndSourcehwndSource=Pr...

WPF Dispatcher.BeginInvoke子线程更新UI

原文:WPFDispatcher.BeginInvoke子线程更新UI在开发WPF应用时出现:”调用线程无法访问此对象,因为另一个线程拥有该对象。“是因为UI线程是WPF应用的主线程,若尝试子线程更新UI线程应使用Dispatcher.BeginInvoke()或者Invoke()方法。Dispatcher.BeginInvoke()//异步执行,不等待委托结束就更新Dispatcher.Invoke()      //代表同步执行Action()              //委托this.Dispatcher.BeginInvoke(newAction(()=>{//你的更新操作}));...

WPF ComboBox 默认选中无效

原文:WPFComboBox默认选中无效在WPF开发当中,我发现ComboBox的默认选中逻辑失效了,仔细查找后发现后台逻辑并没有出现问题。测试后发现在XAML中,ComBoBox控件的SelectedValue属性需要写在ItemSource之前,默认选中又恢复正常了。<ComboBoxSelectedValue="{BindingTypeValue}"ItemsSource="{BindingCmbListItem}"SelectedItem="{BindingCmbSelectItem}"SelectedValuePath="TypeValue"DisplayMemberPath="Member"/>...

WPF 窗体快捷键(热键)

原文:WPF窗体快捷键(热键)前言:在WPF项目开发当中,遇到了需要用到快捷键的需求,于是对热键做了一个快速学习,但是这方面的资源很少。。。 热键大致分为三种场景,下面用QQ的使用场景举例:全局热键:QQ的Ctrl+Alt+A截图。焦点热键:QQ消息栏的Shift+Enter文本换行。窗体热键:Alt+F4关闭QQ的窗口。 在WPF当中,全局热键和焦点热键都可以轻松实现,下面我只对窗体热键进行讲解。第一步:右键项目根目录引用—>管理Nuget程序包—>搜索NHotkey.Wpf并下载安装注册命令推荐加在Window(Page和UserControl中需要鼠标点击焦点后才能触发热键)废话少说,看代码:XAML中:<Window.Resources><RoutedUICommandx:Key="WinKeyDown"Text="F1"/><!--WinKeyDown是静态资源名,F1是你的热键的代名词(随便起)用来后台接收--></Window.Resources><Window.InputBinding...
代码星球 代码星球·2020-04-03

WPF DataGrid标题Header Binding失效

原文:WPFDataGrid标题HeaderBinding失效前言:因业务需要对WPF中的DataGrid控件中的行数进行统计,同时把统计的行数显示在列标题上。如果我们用常规的Binding手段更新DataGridTextColunm的Header的话是不会生效的,因为WPF中视觉树中没有DataGridTextColumn元素来映射它(DataGridTextColumn不是控件,因此它没有父控件)。错误示范:<DataGridTextColumnBinding="{BindingTest}"Header="{BindingColName}"/>因为视觉树的机制,我们只需要把列标题视为一个控件即可(注:Header属性会失效,需要初始化Binding的字段):<DataGridTextColumnBinding="{BindingTest}"Header="列名"><DataGridTextColumn.HeaderTemplate><DataTemplate><TextBlockText="{BindingDataContext...

WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

原文:WPF高性能位图渲染WriteableBitmap及其高性能用法示例WPF渲染框架并没有对外提供多少可以完全控制渲染的部分,目前可以做的有:D3DImage,用来承载使用DirectX各个版本渲染内容的控件WriteableBitmap,通过一段内存空间来指定如何渲染一个位图的图片HwndHost,通过承载一个子窗口以便能叠加任何种类渲染的控件本文将解释如何最大程度压榨WriteableBitmap在WPF下的性能。本文内容如何使用WriteableBitmap启用不安全代码启用帧率测试4K脏区小脏区无脏区不渲染脏区大小与CPU占用率之间的关系启用基准测试(Benchmark)使用`CopyMemory`拷贝内存使用`MoveMemory`移动内存使用`Buffer.MemoryCopy`拷贝内存自己写for循环基准测试数据结论和使用建议WriteableBitmap渲染原理创建一个新的WPF项目,然后我们在MainWindow.xaml中编写一点可以用来显示WriteableBitmap的代码:<Windowx:Class="Walterlv.Demo.HighPerfo...

WPF 程序中应用 Windows 10 真?亚克力效果

原文:在WPF程序中应用Windows10真?亚克力效果从Windows10(1803)开始,Win32应用也可以有API来实现原生的亚克力效果了。不过相比于UWP来说,可定制性会差很多。本文介绍如何在WPF程序中应用Windows10真•亚克力效果。(而不是一些流行的项目里面自己绘制的亚克力效果。)本文内容API如何使用注意事项需要使用的API是微软的文档中并未公开的SetWindowCompositionAttribute。我在另一篇博客中有介绍此API各种用法的效果,详见:使用SetWindowCompositionAttribute来控制程序的窗口边框和背景(可以做Acrylic亚克力效果、模糊效果、主题色效果等)-walterlv当然,使用此API也可以做Windows10早期的模糊效果,比如:在Windows10上为WPF窗口添加模糊特效(就像开始菜单和操作中心那样)-walterlv为了方便地让你的窗口获得亚克力效果,我做了两层不同的API:AcrylicBrush当然,受到Win32启用亚克力效果的限制,只能在窗口上设置此属性WindowAccentCompositor...
首页上一页...56789...下一页尾页