自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(208)
  • 资源 (7)
  • 收藏
  • 关注

翻译 #788 – 使用ScaleTransform对界面控件进行镜像翻转(Flipping an Element Using a Scale Transform)

原文地址:https://wpf.2000things.com/2013/04/01/788-flipping-an-element-using-a-scale-transform/在WPF中,我们可以简单的通过ScaleTransform对界面元素进行水平和垂直方向的镜像翻转。将ScaleTransform的ScaleX属性值设置为-1.0,实现垂直方向上的镜像。将ScaleT...

2019-05-29 17:37:34 1389 1

翻译 #781 – 多个变换执行的顺序问题(Transform Order Matters)

原文地址:https://wpf.2000things.com/2013/03/21/781-transform-order-matters/如果你的程序中对某个控件在TransformGroup中联合了多种Transform进行变换,那么这几种变换执行的顺序与其在代码中的顺序是一样的。例如下面的代码中:

2017-11-16 14:24:56 1123

原创 HTTP上传Base64字符串问题

最近在使用HTTP向服务器上传经过Base64加密的图片时,发现上传后Base64字符串中的“+”全部都变成了空格。具体原因可以参看http://blog.csdn.net/liang_ys/article/details/52953716我的解决方法是使用System.Web.HttpUtility.UrlEncode函数对字符串进行重新编码。System.Web.HttpUtility.U

2017-10-26 10:41:40 3540

翻译 #779 – 旋转变换动画(Animating a Rotation Transform)

原文地址:https://wpf.2000things.com/2013/03/19/779-animating-a-rotation-transform/下面是一个2D的旋转变换动画的例子。在这个例子中控件会持续的旋转。 <Label Content="Gambling now legal in Nevada" Background="Plum" Horiz

2017-10-26 10:33:57 569

翻译 #778 – 缩放变换动画(Animating a Scale Transform)

原文地址:https://wpf.2000things.com/2013/03/18/778-animating-a-scale-transform/下面是一个2D的缩放变换动画的例子。在这个例子中按钮会重复的变大变小抖动。 <Button Content="Ship via Wells, Fargo & Co." HorizontalAlignment="Center" Ver

2017-10-26 10:28:59 587

翻译 #777 – 平移变换动画(Animating a Transform)

原文地址:https://wpf.2000things.com/2013/03/15/777-animating-a-transform/你可以使用包含有AnimationTimeline 的Storyboard 对任何界面控件进行2D平移动画操作。下面的例子中,使用了两个DoubleAnimation 实例对TranslateTransform的X和Y属性进行动画变换,这样TextB

2017-10-17 11:04:24 562

原创 C#用Graphics书写文字时计算字符串所占的像素单位大小

System.Drawing.Graphics g = e.Graphics; // 获得一个Graphics实例string str = "string";System.Drawing.Font font = new System.Drawing.Font(new System.Drawing.FontFamily(this.FontFamily.Source), 32);System.D

2017-09-07 11:22:37 6088

翻译 #770 –LayoutTransform和RenderTransform属性的区别(Difference Between LayoutTransform and RenderTransform)

原文地址:https://wpf.2000things.com/2013/03/06/770-the-difference-between-a-layouttransform-and-a-rendertransform/当要对界面元素进行2D变换的时候,你可以使用选择LayoutTransform 属性或者RenderTransform属性。-LayoutTransform属性 是在...

2017-08-11 15:22:09 1286

翻译 #761 – FlowDirection如何影响HorizontalContentAlignment(How FlowDirection Affects HorizontalContentAlign)

原文地址:https://wpf.2000things.com/2013/02/21/761-how-flowdirection-affects-horizontalcontentalignment/FlowDirection  属性可以被设置成 LeftToRight或者 RightToLeft 这两个枚举值,表示控件中内容的水平布局方向。而HorizontalContentAlignmen

2017-08-01 09:05:39 610

翻译 #753 – ManipulationDelta中Scale和Expansion属性的区别(Scale vs. Expansion in ManipulationDelta Events)

原文地址:https://wpf.2000things.com/2013/02/11/753-scale-vs-expansion-in-manipulationdelta-events/在触摸操作的ManipulationDelta 事件中,我们常常关心缩放的程度。通过事件参数的ManipulationDelta.Scale  属性可以判断出当前缩放大小相对于上一次的倍数。同样的,我们还

2017-07-18 17:38:42 816

翻译 #748 – 获得按下时对应位置点的大小(Getting the Size of a Contact Point during Raw Touch)

原文地址:https://wpf.2000things.com/2013/02/04/748-getting-the-size-of-a-contact-point-during-raw-touch/在低级别的触屏Touch 事件中,我们可以获得手指与屏幕接触的位置的面积大小。获得这个信息可以通过TouchPoint.Bounds 属性(请注意,即使驱动层不支持,该属性也有值,可能会有为0的大

2017-07-07 16:32:39 913

翻译 #747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation)

原文地址:https://wpf.2000things.com/2013/02/01/747-implementing-inertia-during-touch-manipulation/在WPF触摸操作滑动控件的时候,有的时候希望控件能够在手指离开控件后依照惯性继续滑动,直至慢慢减速停止。默认情况下这个功能是不开启的,当手指离开控件后,控件就会停止滑动。如果要开启惯性移动,需要在惯性移动开始

2017-07-05 16:06:00 807

翻译 #742&743 –使用触摸事件旋转和缩放控件

原文地址:https://wpf.2000things.com/2013/01/25/742-using-touch-manipulation-events-to-rotate-an-element/在上一篇中,我们使用触摸事件移动控件,我们同样可以用类似的方法来旋转和缩放控件。这次我们在ManipulationDelta 事件处理函数中同时对控件支持位移、旋转和缩放。事件参数中的ManipulationDelta 实例会提供位移矢量、旋转角度和缩放倍数。下面是XAML代码:

2017-06-30 17:15:16 636

翻译 #741 – 使用触摸事件移动控件(Using Touch Manipulation Events to Translate an Element)

原文地址:https://wpf.2000things.com/2013/01/24/741-using-touch-manipulation-events-to-translate-an-element/你可以通过使用触摸操作事件在屏幕上移动控件。让控件随着手指的移动在屏幕上移动。首先,需要设置需要接收触摸操作事件的控件的IsManipulationEnabled 属性为true ,来开

2017-06-28 14:58:58 517

翻译 #736 – 通过代码获取硬件支持的最大触摸点数(Finding the Maximum Number of Touch Points at Run-time)

原文地址;https://wpf.2000things.com/2013/01/17/736-finding-the-maximum-number-of-touch-points-at-run-time/我们可以使用Win32的API函数GetSystemMetrics 获取硬件支持的最大触摸点数。class Program{ [DllImport("user32.dll")]

2017-06-27 11:03:38 575

翻译 #734 – 在触摸事件中识别不同的手指(Recognizing Different Fingers in Touch Event Handlers)

原文地址:https://wpf.2000things.com/2013/01/15/734-recognizing-different-fingers-in-touch-event-handlers/我们在WPF中处理低级别的触摸事件的时候,用户可能会使用不止一根手指进行触摸操作,而你想跟踪用户的某跟手指的触摸操作,你可以使用TouchEventArgs.TouchDevice.Id 属性。

2017-06-23 15:41:17 580

翻译 #730 – 使用QueryContinueDrag 事件(Use QueryContinueDrag Event to Know When Mouse Button State Changes)

原文地址:https://wpf.2000things.com/2013/01/09/730-use-querycontinuedrag-event-to-know-when-mouse-button-state-changes/当在拖拽的操作过程中,鼠标或者键盘的按键状态(Ctrl, Shift 或者Alt)发生改变,QueryContinueDrag 事件就会被触发。下面的例子中,当拖

2017-06-22 09:16:44 1397

原创 C#中使用系统剪切板

在C#中,我们可以使用静态类System.Windows.Clipboard 来使用系统剪切板复制和剪切内容。Clipboard.SetText函数,向剪切板中插入内容,将制定的内容添加到剪切板;Clipboard.GetText函数,获取剪切板中当前的内容。

2017-06-06 09:03:48 6106

翻译 #715 – 在Canvas中使用Thumb控件实现拖动目标的功能(Using the Thumb Control to Drag Objects on a Canvas)

原文地址:https://wpf.2000things.com/2012/12/19/715-using-the-thumb-control-to-drag-objects-on-a-canvas/你可以使用Thumb 控件在Canvas 上实现简单的拖动控件功能。设置Thumb 控件的Template,使Template 包含你需要拖动的控件,然后在DragDelta 事件中处理。下

2017-06-05 18:44:41 835

翻译 #713 – 在拖拽操作中使用控件预览图作为鼠标(Setting the Cursor to an Image of an UIElement While Dragging)

原文地址:https://wpf.2000things.com/2012/12/17/713-setting-the-cursor-to-an-image-of-an-uielement-while-dragging/在拖拽操作的过程中,你可以通过GiveFeedback 事件的处理函数来修改鼠标光标的样子。甚至可以将拖拽控件生成图片作为鼠标光标。下面是根据Brandon Cannaday

2017-06-05 17:53:09 885

翻译 #711 – 在拖拽的过程中改变鼠标样式(Changing the Mouse Cursor While Dragging)

原文地址:https://wpf.2000things.com/2012/12/13/711-changing-the-mouse-cursor-while-dragging/在WPF拖拽的过程中,通过GiveFeedback 事件可以更改整个过程中鼠标的样式。在事件中,我们可以通过GiveFeedbackEventArgs.Effects 属性来判断当前位置的拖动效果,从而设置鼠标的样式。

2017-05-04 16:13:23 6740

翻译 #708 – 将文件拖入到WPF应用程序中(Dragging a File Into a WPF Application)

原文地址:https://wpf.2000things.com/2012/12/10/708-dragging-a-file-into-a-wpf-application/如果你的应用程序中允许将文件拖入,那么就需要使用DataFormats.FileDrop 类型的数据。在代码中指定只允许FileDrop 类型的数据进入。private void Window_DragEnter(o

2017-05-02 18:00:39 1237

翻译 #707 – 从WPF程序中拖拽一个List列表的数据到Excel(Dragging a List of Items from a WPF Application into Excel)

原文地址:https://wpf.2000things.com/2012/12/07/707-dragging-a-list-of-items-from-a-wpf-application-into-excel/你可以从WPF应用程序中拖拽列表的数据到Excel中,拖动数据中各个列表项以逗号分隔,这种CSV数据格式会自动的被分配到不同的单元格。下面是一个ListBox 的例子。在下

2017-05-02 17:41:35 519

翻译 #706 – 在应用程序间拖拽进行控件复制(Dragging User Interface Elements Between Applications)

原文地址:https://wpf.2000things.com/2012/12/06/706-dragging-user-interface-elements-between-applications/你可以在两个应用程序间拖拽控件,这种情况下,你通过读取可视树XAML中,你想要拖拽的控件的那一部分作为数据。下面是一个拖拽整个StackPanel (包括其字控件)到另外一个应用

2017-04-28 14:59:02 445

翻译 #705 – 拖拽可序列化类型的数据(Dragging a Custom Object Using Serialization as Format)

有的时候,我们希望拖拽过来的数据或者属性能直接参与到绑定当中,这种情况下可以将拖拽数据创建为Serializable。下面的例子中,有一个Dog 类型的变量参与了绑定,它的属性值会显示到Label 控件上。<StackPanel Orientation="Vertical" HorizontalAlignment="Center" MouseLeftButtonDo

2017-04-25 18:30:49 388

翻译 在不同的情况下拖拽图片

一、在一个WPF应用程序中,如果我们需要经图片从一个地方通过拖拽复制或者移动到应用程序中的另外一个地方,可以非常简单的使用Image 控件的Source 属性作为拖拽传递的数据。private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ Image img = e.Source as I

2017-04-24 16:19:54 1455

翻译 #695 – 实现一个简单的拖拽(Implementing Drag-and-Drop Behavior)

下面例子中的代码实现了从一个TextBox 中拖拽文字到一个ListBox 里。在XAML中,我们指定TextBox 的MouseDown 事件处理韩式和ListBox 的Drop 事件处理函数。并且要设置ListBox 的AllowDrop 属性为true(表示允许接收拖拽的输入). 在TextBox 的MouseDown 事件处理函数中,我们执行DragDr

2017-04-17 17:44:40 545

翻译 #686 – 使用动画是控件具有闪烁效果(Using Animation to Make an Image Pulse)

<DoubleAnimation Storyboard.TargetName="funkyArrow" Storyboard.TargetProperty="Opacity" From="1.0" To="0.1" Duration="0:0:0.5"

2017-03-17 17:26:37 510

原创 在WPF中强制捕获鼠标,鼠标移出控件后依然何以获取鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件。例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开。在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件。同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不

2017-03-17 17:07:42 4179 3

原创 Panel类及其子类只有在设置了背景色以后才会触发鼠标事件

Panel类及其子类只有在设置了背景色以后才会触发鼠标事件。如果未定义 Background,则 Panel 元素不会接收鼠标或手写笔事件。如果需要处理鼠标或手写笔事件而不需要对 Panel 使用背景,请使用 Transparent。Panel类及其子类为:

2017-03-08 11:50:52 482

翻译 #678 – 通过IsHitTestVisible属性使界面元素不响应鼠标(Hide an Element from the Mouse with IsHitTestVisible Property)

通过设置IsHitTestVisible 属性值为false,可以使界面元素不响应鼠标,鼠标事件也不会被触发。在下面的例子中有两个Label,我们将其中一个的IsHitTestVisible 属性设为false。 <Label Content="Mouse Sees Me" Background="AliceBlue" Margin="10" MouseMov

2017-03-08 10:11:28 2052

翻译 #673 – 将鼠标位置和颜色进行映射(Mapping Mouse Position to Color)

我们可以将鼠标的位置信息隐射成颜色的色调和饱和度,然后将HSV颜色值转换为RGB颜色值(我们将亮度值设为1.0)。我们将鼠标位置和中心点连线的角度作为色调值,将鼠标和中心点的距离作为饱和度值。这个图像模型如下图:下面的代码中我们有一个400*400的Canvas,取鼠标在其上面的位置算出一个颜色显示在Label中。<Window Name="win1" x:Class="WpfAppl

2017-03-07 11:40:59 570

原创 WPF获得鼠标位置的方法

方法1使用静态方法Mouse.GetPosition 。该方法可以获得与指定元素相对的鼠标位置,参数为你要指定的元素,如果为null,那么将获得最顶层窗口上鼠标的位置。方法2在鼠标事件处理函数中通过MouseButtonEventArgs 类型的事件参数的GetPosition 方法获得与指定元素相对的鼠标位置。

2017-02-24 17:42:46 5130 4

翻译 IsMouseOver 和MouseEnter\MouseLeave 事件

在界面程序中IsMouseOver 属性用来判断鼠标是否在某个界面元素上悬停。如果当一个界面元素在逻辑树中被另外一个元素包含,当鼠标同时停在两个元素上的时候,两个元素的IsMouseOver 都是true,无论下面的元素是否被遮住。当IsMouseOver 属性从false变为true的时候会触发UIElement 的MouseEnter 事件,当IsMouseOver 属性从true变为

2017-02-22 16:16:19 8608 1

原创 修改鼠标双击判断时间间隔

在WPF鼠标事件中,我们可以通过事件参数的ClickCount 属性来判断鼠标连续点击的次数。那么鼠标在多久的时间间隔内点击才被算作是连续点击呢?这个是可以在系统里设置的。在Window7系统里,在控制面板中找到鼠标,选择“双击速度”那一项。在Window8系统里也是一样需要找到鼠标点击。如下图鼠标双击的判断时间可以设置从200毫秒到900毫秒。

2017-02-20 17:50:15 11094

翻译 #655 – 冒泡事件可能会被某些控件屏蔽(Bubbling Mouse Events Swallowed by Some Controls)

当你在一个Label 控件点击鼠标左键的时候,你可以看到一些列的隧道和冒泡事件被触发,如下图:然而,如果你在TextBox 控件上点击鼠标左键,你可以仅仅只能触发隧道事件。其他的冒泡事件将不会在TextBox 控件上被触发。通常情况下,当用户在控件上按下鼠标键控件需要做某些事情的时候,控件会屏蔽掉相关的事件。例如,点击TextBox 需要给控件设置获得输入焦点,点击Button 或

2017-02-16 16:43:20 412

翻译 StringBuilder 的容量(StringBuilder Capacity)

在使用StringBuilder 实例的时候,你不需要关心它为其存储的字符串分配了多大的内存,它会自动为字符串创建足够的内存。其Capacity 属性表明了一个StringBuilder 实例最多可以存储多少个字符,当存储的字符所需的空间大于这个数的时候,StringBuilder 会自动增大内存,增加Capacity 。而StringBuilder 实例的Length 属性则表示当前存储

2017-02-09 18:05:57 13589 2

原创 获得任何按键状态的方法

之前提到了在按键事件处理函数中获得触发事件的按键的状态的方法。那么如果获得其它按键状态呢?有一下几张方法: 1. 在按键事件处理函数中通过事件但是获得键盘设备实例,然后通过IsKeyDown, IsKeyToggled,IsKeyUp 函数获得按键状态。 e.KeyboardDevice.IsKeyToggled(Key.CapsLock); 2. 使用静态类Keyboard

2017-02-09 11:40:10 3828

翻译 #649 – KeyStates 属性包含了 IsDown 和IsToggled的内容(KeyStates Property Combines IsDown and IsToggled)

在按键按下事件处理函数中,你可以确定触发该事件的按钮的状态。事件参数的IsDown 和IsToggled属性可以告诉我们按钮现在是否按下和是否打开切换开关。你也可以通过事件参数的KeyStates 属性获得这些信息。这个属性的值是一个枚举的组合(用不同的位表示不同的状态)。private void TextBox_PreviewKeyDown(object sender, KeyEvent

2017-02-08 10:54:48 661

翻译 #646 – 在按键按下事件处理程序中判断按键开关状态(Detecting a Key’s Toggle State in a Keypress Handler)

在键盘上,有些键是可以切换状态的开关键,一些常用的开关键为:Caps Lock(大小写开关键), Scroll Lock(滚动锁定键) 和Num Lock(数字键盘开关键)。注意,通常情况下Shift键不被认为是开关键。当按键被按下,我们可以通过按键按下事件处理函数的参数中的KeyEventArgs.IsToggled 属性来判断按键状态是打开或者关闭。private void TextB

2017-02-06 16:06:57 1519

你比我猜,游戏程序(windows)

公司年会的时候需要做一个你比我猜的游戏,于是让我写了一个游戏UI,十分简单,现在分享出来给大家。这个程序需要.Net Framework4

2018-01-31

WPF播放GIF图片源代码

WPF播放GIF项目,里面有实现了一个控件(GIFImage)播放GIF控件,然后在窗体中使用。这个控件可以单独拿出来使用。

2016-09-23

WPF拖曳例子

WPF拖曳例子

2016-06-28

WPF Drag Drop例子

WPF Drag Drop例子

2016-06-28

官方WPF 拖曳例子源代码

官方WPF 拖曳例子

2016-06-28

微软C#无线网络管理库

微软官方C#编写的无线网络管理类库

2016-05-24

电脑报VC++教程

简单易懂的介绍了MFC编程,示例不错,适合新手。

2007-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除