c#
文章平均质量分 52
西飘客
这个作者很懒,什么都没留下…
展开
-
WPF程序中 Invoke的使用
【代码】WPF程序中 Invoke的使用。原创 2024-06-26 13:33:34 · 428 阅读 · 0 评论 -
C# 使用系统API关机、重启、注销
在Windows系统中有2种方式进行关机、重启以及注销计算机操作:1、使用shutdown()命令;2、使用系统API;以下是使用系统API进行操作的实例。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using转载 2021-12-13 18:22:43 · 1245 阅读 · 0 评论 -
WPF 关机处理
Application类的SessionEnding事件,就是电脑关机或重启时响应的(会话结束事件),所以只需要在App.xaml中添加SessionEnding<Application x:Class="DriverEasyWPF.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.转载 2021-12-13 17:47:07 · 431 阅读 · 0 评论 -
WPF 行为(Behavior)的示例
行为的用法有些类似触发器的效果,但是触发器一般只能适用同一种的控件;而一个行为可以用在不同控件下(指定相同的父类);示例:注意先要添加引用System.Windows.Interactivity.dll类库先新建一个行为类:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;转载 2021-12-02 09:14:53 · 368 阅读 · 0 评论 -
WPF 行为
介绍在讲解到样式的时候我们说,样式是为了一系列元素共享一些属性而存在的,归根结底是为了复用代码和逻辑,而我们学习了触发器之后,发现我们可以用触发器写一些简单的逻辑到样式中,但是这种简单的逻辑有时候远远不够。当我们要实现一堆元素支持在Cancas上面拖放,停靠,缩放等功能的时候,触发器就显得不是那么够用了。我们在复用代码的时候,有下面三种方法,他们互相补充,构建了WPF的属性重用架构,在合适的场景下选择合适的方法可以极大的简化我们的开发工作样式,主要是属性的设置,用触发器写的简单的控件行为自定转载 2021-12-01 18:34:16 · 440 阅读 · 0 评论 -
WPF 动画类型回顾
创建动画面临的第一个挑战是为动画选择正确的属性。期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观。下面是一些指导原则: 如果希望使用动画来使元素显示和消失,不要使用Visibility属性(该属性只能在完全可见和完全不可见之间进行切换)。应改用Opacity属性淡入或淡出元素。 如果希望动态改变元素的位置,可考虑使用Canvas面板。它提供了最直接的属性(Canvas.Left及Canvas.Top),转载 2021-12-01 16:25:58 · 564 阅读 · 0 评论 -
WPF 透明
WPF支持真正的透明效果。这意味着,如果在一个性质或元素上层叠另外几个形状或元素,并让所有这些形状和元素具有不同的透明度,就会看到所期望的效果。通过该特性能够创建透过上面的元素可以看到的的图像背景,这是最简单的情形。最复杂的情形是,使用该特性可创建多层动画和其他效果,对于其他框架来说这是很难实现的。一、使用元素半透明 可采用以下几种方法使元素具有半透明效果: 设置元素的Opacity属性。每个元素(包括形状)都是从UIElement基类继承了Opacity属性。不透明度(Opacity)是0转载 2021-12-01 15:30:12 · 2572 阅读 · 0 评论 -
WPF 基于帧的动画
除基于属性的动画系统外,WPF提供了一种创建基于帧的动画的方法,这种方法只使用代码。需要做的全部工作是响应静态的CompositionTarge.Rendering事件,触发该事件是为了给每帧获取内容。这是一种非常低级的方法,除非使用标准的基于属性的动画模型不能满足需要(例如,构建简单的侧边滚动游戏、创建基于物理的动画式构建粒子效果模型(如火焰、雪花以及气泡)),否则不会希望使用这种方法。 构建基于帧的动画的基本技术很容易。只需要为静态的CompositionTarget.Rendering事件关联转载 2021-12-01 15:19:10 · 556 阅读 · 0 评论 -
WPF 基本动画
在前一章已经学习过WPF动画的第一条规则——每个动画依赖于一个依赖项属性。然而,还有另一个限制。为了实现属性的动态化(换句话说,使用基于时间的方式改变属性的值),需要有支持相应数据类型的动画类。例如,Button.Width属性使用双精度数据类型。为实现属性的动态化,需要使用DoubleAnimation类。但Button.Paddin属性使用的是Thickness结构,所以需要使用ThicknessAnimation类。 该要求不像WPF动画的第一条规则那么绝对,第一条规则将动画局限于依赖项属性转载 2021-12-01 15:03:12 · 1302 阅读 · 0 评论 -
WPF 画刷
画刷填充区域,不管是元素的背景色、前景色以及边框,还是形状的内部填充和笔画(Stroke)。最简单的画刷类型是SolidColorBrush,这种画刷填充一种固定、连续的颜色。在XAML中设置形状的Stroke或Fill属性时,使用的是SolidColorBrush画刷,他们在后台完成绘制。 下面是几个与画刷相关的更基本的方面: 画刷支持更改通知,因为他们继承自Freezable类。因此,如果改变了画刷,任何使用画刷的元素都会自动重新绘制自身。 画刷支持部分透明。为此,只需要修改Opaci转载 2021-12-01 14:35:42 · 653 阅读 · 0 评论 -
WPF 动态变换示例
代码:<Window x:Class="WpfApplication1动画.动态LayOutRransform" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="动态LayOutRransform" Height="300" Width=转载 2021-12-01 11:18:17 · 142 阅读 · 0 评论 -
WPF 动态变换(RenderTransform和LayoutTransform)
布局系统WPF提供两种变换方式,分别是LayoutTransform和RenderTransform。从字面意思来讲LayoutTransform是布局变换,后者RenderTransform是渲染变换。在WPF中,许多绘图任务通过使用变换(transform)可以变得更加简单——变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象。在WPF中,变换的一些类大多继承自System.Windows.Media.Trandform。下面是这些类的列表:TranslateTr转载 2021-12-01 11:11:13 · 4606 阅读 · 0 评论 -
WPF 样式、触发器
样式基础样式(Style)是组织和重用格式化选项的重要工具。不是使用重复的标记填充XAML,以便设置外边距、内边距、颜色以及字体等细节,而是创建一系列封装所有这些细节的样式,然后再需要之处通过属性来应用样式。样式是可应用于元素的属性值集合。使用资源的最常见原因之一就是保存样式。使按钮具有统一格式的实现方式一:资源<Window.Resources> <FontFamily x:Key="ButtonFontFamily">Times New Roma转载 2021-12-01 10:36:59 · 342 阅读 · 0 评论 -
WPF 创建一个资源字典dll工程-资源共享
1、新建一个wpf工程2、创建之后,右键删除App.xaml和MainWindow.xaml3、更改工程属性中输出类型为:类库,搞定原创 2021-11-30 18:45:54 · 889 阅读 · 0 评论 -
WPF 单例运行(同一个程序只能打开一个)
1、修改App.xaml.csusing System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Linq;using System.Windows;using System.Threading;namespace Wpf_singletonRun{ /// <summary> /// App.xaml 的交互逻辑原创 2021-11-30 16:32:20 · 986 阅读 · 0 评论 -
WPF 程序集资源
一。将资源设置为Resource,会在程序编译时将资源编译成二进制文件。之后将资源文件删除也不影响程序,稳定性较好,但是占用程序大小。1.图片资源的属性。2。Image控件添加Source二。将资源设置为内容,且始终复制到输出目录。不会编译资源,会将资源文件保存到项目文件下。启动时再去读取。1.图片属性2.Image控件添加Source会在项目目录下创建Image文件,如果修改里面内容,对程序有影响。...转载 2021-11-30 15:52:41 · 206 阅读 · 0 评论 -
WPF 白天过度到黑夜动画效果
<Window.Triggers> <EventTrigger SourceName="cmdStart" RoutedEvent="Button.Click"> <BeginStoryboard Name="fadeStoryboardBegin"> <Storyboard> <DoubleAnimation Storyboard.T...转载 2021-11-30 14:18:55 · 256 阅读 · 0 评论 -
WPF 绑定示例
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;...转载 2021-11-30 14:11:10 · 107 阅读 · 0 评论 -
WPF 元素绑定
数据绑定是一种关系,最简单的关系就是 源对象是WPF元素而且源属性是依赖项属性。依赖项属性具有内置的更改通知支持。因此当源对象中改变依赖属性的值时,会立即更新目标对象中的绑定属性。当使用绑定表达式时,不必对源对象做任何改动,只需配置源对象使其属性具有正确的值范围。<Slider Grid.Row="0" Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1" TickPlac转载 2021-11-30 14:02:43 · 284 阅读 · 0 评论 -
WPF 资源(StaticResource 静态资源、DynamicResource 动态资源)
一)基础知识静态资源(Static Resource),动态资源(Dynamic Resources)。这两者的区别是:静态资源在第一次编译后即确定其对象或值,之后不能对其进行修改。动态资源则是在运行时决定,当运行过程中真正需要时,才到资源目标中查找其值。因此,我们可以动态地修改它。由于动态资源的运行时才能确定其值,因此效率比静态资源要低。动态修改,是两种资源最显著的差异,也是极其重要的知识点,下面这个例子就是最好的说明,简单但能解决问题。<Window x:Class="StaticD转载 2021-11-29 15:45:45 · 6433 阅读 · 0 评论 -
WPF 初始屏幕-SplashScreen
添加现有图像作为初始屏幕创建或查找要用于初始屏幕的图像。 可以使用 Windows 图像处理组件 (WIC) 支持的任何图像格式。 例如,可以使用 BMP、GIF、JPEG、PNG 或 TIFF 格式。 将图像文件添加到 WPF 应用程序项目。 在解决方案资源管理器中选择该图像。 在“属性”窗口中,单击“生成操作”属性的下拉箭头。 从下拉列表中选择“SplashScreen”。 按 F5 生成并运行应用程序。 初始屏幕图像显示在屏幕中间,当主应用程序窗口显示时,该图像将淡出...转载 2021-11-29 11:49:15 · 959 阅读 · 0 评论 -
c# out和ref的区别
1、两者都是按地址传递的,使用后都将改变原来参数的数值。2、ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。3、传递到ref参数的参数必须最先初始化。这与out不同,后者的参数在传递之前不需要显式初始化。 int num = 5; Console.WriteLine("num={0}", num);...原创 2021-11-26 09:16:02 · 518 阅读 · 0 评论 -
WPF Storyboard的属性锁定问题
比如一个简单DoubleAnimation动画:myDA = new DoubleAnimation();myDA.From = this.myObject.Opacity;myDA.To = 0.1;myDA.Duration = new Duration(TimeSpan.FromMilliseconds(600));Storyboard.SetTargetName(myDA, "myObject");Storyboard.SetTargetProperty(myDA, new Prope转载 2021-11-08 15:47:13 · 462 阅读 · 0 评论 -
WPF 查看pdf文件
需要打开PDF文件时,我们第一印象就是使用Adobe Reader。在开发中,经常会遇到需要展示PDF文件的需求。我们会借助于Adobe Reader的Active控件来实现。不过这需要客户的机器上安装有Adobe Reader,并且使用Adobe Reader的Active控件会在顶部有一个隐藏不了的工具栏。这样显然不合理。在Github上看到一个非常好的WPF中承载PDF文件的类库。https://github.com/reliak/moonpdf使用非常简单,本篇博客将介绍使用MoonPd转载 2021-11-03 14:17:30 · 2540 阅读 · 1 评论 -
C# 枚举文件夹 文件名称按数字顺序排列
1、先创建一个继承自IComparer 的类,可以将该类的访问属性设置为 public (若设置为私有,则只能在该工程中被使用)using System;//using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;using System.Collections;namespace xxx{ public class F.转载 2021-11-02 18:24:45 · 600 阅读 · 0 评论 -
WPF 事件无法被执行
原因:由于某些控件内部有一些内建的事件处理,其MouseDown事件(包括MouseUp等)在处理完成之后将Handled标志置为true,附加事件PreviewMouseDown事件也就不再被执行,所以普通的MouseDown事件代码是不会有作用的。如果要使用MouseDown事件,要么使用PreviewMouseDown事件来替代,要么使用AddHandler来添加自定义的路由事件处理。解决:使用AddHandler添加自定义的路由事件,可添加多次,重复执行多次// 测试重复多次添加同一个原创 2021-10-11 16:51:20 · 492 阅读 · 0 评论 -
wpf WindowsFormsHost上加控件的方法
方法1:使用多个WindowsFormsHost,后面的会叠加到前面的上面<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas原创 2021-01-15 11:38:28 · 1726 阅读 · 0 评论 -
c# 使窗体获取焦点
this.Activate();this.Focus();原创 2021-01-06 09:55:03 · 3480 阅读 · 0 评论 -
C# 通过文件路径获取文件名
string fullPath = @"c:\test.jpg";string filename = System.IO.Path.GetFileName(fullPath);//文件名 “test.jpg”string extension = System.IO.Path.GetExtension(fullPath);//扩展名 “.jpg”string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(.原创 2020-10-09 12:04:04 · 1927 阅读 · 0 评论 -
wpf cfesharp的环境配置
笔者使用的是vs2013+cefsharp49.01版本调试出chrome内核的浏览器界面的,先上个截图下面说说配置步骤,由于我的vs2013使用nuget在项目-管理nuget程序包中 搜索不到程序包,顾采取其他方法1、去https://www.nuget.org/搜索下载如下4个程序包2、使用vs2013中的 工具-nuget程序包管理器-程序包管理器控制台安装程序包使用命令:Install-Package CefSharp.Wpf -version 49.0.1,程序包是是原创 2020-09-01 14:23:40 · 429 阅读 · 0 评论 -
c# RGB与int类型相互转换
1、普通算法 int value = color.R + color.G * 256 + color.B * 256 * 256; private Color To_RGB(int color) { int b = color / (256 * 256); int g = (color - b * 256 * 256) / 256; int r = color - b ...原创 2020-08-31 13:54:17 · 1785 阅读 · 0 评论 -
Wpf 后台代码设定UIElement的Canvas位置属性值
1.UIElement.SetValue()方法uiElement.SetValue(Canvas.TopProperty, 100.0);uiElement.SetValue(Canvas.LeftProperty, 100.0);2. Canvas.SetTop()方法 //Right\Buttom\Left同Canvas.SetTop(uiElement, 100.0);Canvas.SetLeft(uiElement, 100.0);值得注意的是: 如果需要来回反复设定原创 2020-08-27 10:44:00 · 1045 阅读 · 0 评论 -
WPF Path详解
、XAML(代码A):<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <Canvas><!--这是使用PathFigureCollection的表示方法--><Path Stroke="Black" StrokeThickness="1" F原创 2020-08-18 15:16:24 · 8219 阅读 · 0 评论 -
WPF 获取控件位置的方法
1.获取鼠标在控件中的坐标//在Mouse相关的事件中的方式 void item_MouseDown(object sender, MouseButtonEventArgs e) { Point point = e.GetPosition(canvas); } //或者Mouse的静态方法GetPosition() 获取与指定元素相对的鼠标位置=>等同于上面 Point point = Mouse.GetPo原创 2020-08-18 15:08:04 · 6599 阅读 · 0 评论 -
C#委托实现WPF子窗体向主窗体传递消息
1、主窗体using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Dat...原创 2020-04-27 17:58:52 · 851 阅读 · 0 评论 -
wpf image资源释放问题
使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放。解决方案1:public static BitmapImage GetImage(string imagePath) { BitmapImage bitmap = new BitmapImage();...原创 2019-11-08 19:07:35 · 4011 阅读 · 0 评论 -
c# 获取本地主机的ip地址三种方法
第一种 取本主机ip地址 public string GetLocalIp() { ///获取本地的IP地址 string AddressIP = string.Empty; foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.Ge...转载 2018-10-16 09:22:26 · 44874 阅读 · 2 评论 -
WPF 序列帧动画
直接上代码private void LoadPics() { try { _storyboard = new Storyboard(); for (int i = 0; i < 60; i++) { ...转载 2018-12-06 15:30:37 · 1839 阅读 · 1 评论 -
wpf 获取屏幕信息(数量、主屏)
1、屏幕数量 int count = System.Windows.Forms.Screen.AllScreens.Count();2、是否主屏 //Primary 获取一个值,该值指示是否特殊的显示器主要设备 foreach (System.Windows.Forms.Screen scr in System.Windows.Forms.Screen.AllSc...转载 2018-12-23 16:39:09 · 2165 阅读 · 0 评论 -
C# 启动外部程序
本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法:1. 启动外部程序,不等待其退出。2. 启动外部程序,等待其退出。3. 启动外部程序,无限等待其退出。4. 启动外部程序,通过事件监视其退出。// using System.Diagnostics;private string appName = "calc.exe";/// <sum...转载 2018-12-23 16:41:27 · 760 阅读 · 0 评论