WPF界面的编写

滑动条的显示

//前台界面的设计
<Border Grid.Row="1"
Background="Transparent"
BorderThickness="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="18" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Margin="26,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="12"
FontWeight="Regular"
Foreground="#333333"
Text="笔触大小" />
<Slider x:Name="slider1"
Grid.Row="1"
Height="18"
Margin="26,0,10,0"
aps:ThumbBehaviors.DragCompletedCommand="{Binding DragedCompletedCommand}"
aps:ThumbBehaviors.DragStartedCommand="{Binding DragedStartedCommand}"
//移动范围只能是整数
IsSnapToTickEnabled="True"
//绑定最大值"笔触大小的值"
Maximum="{Binding MaxPenWidth}"
Minimum="1"
Style="{DynamicResource SliderStyleMax}"
Value="{Binding PenWidth, Mode=TwoWay}" />
<StackPanel Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Right"
Orientation="Horizontal">
<TextBlock Margin="0,0,26,0"
FontSize="12"
//text的值 使用ElementName绑定数据 这个数据使用的是"Slider"控件且采用名字去别名
Text="{Binding ElementName=slider1, Path=Value}" />
</StackPanel>
</Grid>
</Border>

 与滑动条同步的画笔大小

  <Grid x:Name="mouseGrid"
//涂抹的画笔大小
Width="{Binding PenWidth}"
Height="{Binding PenWidth}"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Visibility="Collapsed">
<Grid.Effect>
<DropShadowEffect Opacity="0.4"
ShadowDepth="-1"
Color="#333333" />
</Grid.Effect>
<Ellipse HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Stroke="#333333"
//定义边框粗细
StrokeThickness="{Binding Scale, Converter={StaticResource StrokeConverter}}" />
</Grid>

相关属性的使用

  • 画笔大小的设置

    //画笔默认是初始值是15
    private double penWidth = 15;
    public double PenWidth {
    get {
    return penWidth;
    }
    set {
    Set(ref penWidth, value);
    OnDragDelta?.Invoke();
    }
    }
  • ?. :是在C#6.0中才有的,这个也称为空值传播运算,这个运算可以确保在事件没有订阅是不引发事件的
  • OnDragDelta?.Invoke();中的OnDragDelta,是在最开始进行封装了"public event Action OnDragDelta;"
  • 画笔最大值属性的设置
  •  private int maxPenWidth;
    public int MaxPenWidth {
    get {
    return maxPenWidth;
    }
    set {
    Set(ref maxPenWidth, value);
    PenWidth = value * 0.2;
    }
    }
  • Scale属性可以通过鼠标,加与减相关命令来控制画笔大小
  • private double scale = 1.0;
    public double Scale {
    get {
    return scale;
    }
    set {
    Set(ref scale, value);
    }
    }
  • 相关控制的命令
  • private RelayCommand reduceVisualCommand = null;
    public RelayCommand ReduceVisualCommand {
    get {
    return reduceVisualCommand ?? new RelayCommand(() => {
    double targetScale = Math.Round(Scale - 0.1, 1);
    if (targetScale < 0.4) {
    targetScale = 0.4;
    }
    Scale = targetScale;
    });
    }
    } private RelayCommand<int> mouseWheelCommand = null;
    public RelayCommand<int> MouseWheelCommand {
    get {
    return mouseWheelCommand ?? new RelayCommand<int>((delta) => {
    double targetScale = Scale + delta * 0.001;
    if (targetScale > 10.0) {
    targetScale = 10.0;
    }
    if (targetScale < 0.4) {
    targetScale = 0.4;
    }
    Scale = targetScale;
    });
    }
    } private RelayCommand addVisualCommand = null;
    public RelayCommand AddVisualCommand {
    get {
    return addVisualCommand ?? new RelayCommand(() => {
    double targetScale = Math.Round(Scale + 0.1, 1);
    if (targetScale > 10.0) {
    targetScale = 10.0;
    }
    Scale = targetScale;
    });
    }
    }

WPF中进度条同步实现的更多相关文章

  1. WPF的进度条progressbar,运行时间elapse time和等待spinner的实现

    今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧.   这个例子包含4个实现,分别是同步版 ...

  2. wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合

    wpf 导出Excel   1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...

  3. AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中

    1.下载文件 和进度条处理代码 - (void)timer:(NSTimer *)timer{ // 另一个View中 进度条progress属性赋值 _downloadView.progress = ...

  4. Jsf中进度条的用法

    Jsf中进度条的用法 前端页面 <!-- 进度条 --> <p:progressBar widgetVar="pbAjax" ajax="true&qu ...

  5. WPF 自定义进度条

    WPF设计界面过程中,有时需要设计一种可以手动滑动修改并实时显示的进度条 进度条,效果如下: 颜色.图标.节点什么的,都可以重新替换. 前端XAML代码: <UserControl x:Clas ...

  6. WPF 水平进度条

    WPF设计界面过程中,有时需要设计一种可以手动滑动修改并实时显示的进度条 进度条,效果如下: 颜色.图标.节点什么的,都可以重新替换. 前端XAML代码: <UserControl x:Clas ...

  7. 关于C# WinForm中进度条的实现方法

    http://www.cnblogs.com/Sue_/articles/2024932.html 进度条是一个软件人性化考虑之一,他给用户的感觉就是程序内部在不停的动作,执行到了什么程度,而不是整个 ...

  8. wpf 水波进度条 用户控件

    之前看公司web前端做了个 圆形的水波纹 进度条,就想用wpf 做一个,奈何自己太菜 一直做不出来,在看过 “普通的地球人” 的 “ WPF实现三星手机充电界面 博客之后 我也来照葫芦画个瓢. 废话不 ...

  9. QT中进度条的使用

    在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 //补充:下面两句 ...

  10. WPF 简易进度条效果

    最近做一个项目,看到以前同事写的进度条效果不错,所以,拿来简化了下,不炫,但是项目中还是够用的. 还是,先来看下调用以后的效果 1.因为ProgressbBar的Foreground显示不得不一样,所 ...

随机推荐

  1. 罗技GHUB怎么写入板载内存

    本文以自用罗技MX518复刻版鼠标作为例子,让大家怎么学会把logitech G HUB的设置写入鼠标板载内存,并且一键切换各组板载设置. 首先点击最下方的启用,让软件设置鼠标各项设定 启用软件的设定 ...

  2. 深入理解 Python 虚拟机:字典(dict)的优化

    深入理解 Python 虚拟机:字典(dict)的优化 在前面的文章当中我们讨论的是 python3 当中早期的内嵌数据结构字典的实现,在本篇文章当中主要介绍在后续对于字典的内存优化. 字典优化 在前 ...

  3. Rancher 系列文章-Rancher 升级

    概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本. 前几天发现 Ran ...

  4. Excel或数据库快速生成GUID

    一般一些开发软件或者网站可以直接生成guid, 比如:https://www.iamwawa.cn/guid.html 但是在某些场景下,经常在一些excel或者数据库操作需要快速生成指定格式的gui ...

  5. [Linux]常用命令之【du/fdisk/df/ls】#磁盘管理/文件管理#

    本文的经典应用场景: 1.查找占用磁盘存储空间最大的目录/文件 2.关于[磁盘分区]的相关概念和实操,详见另一博文:[Linux]磁盘分区 - 博客园/千千寰宇 1 fdisk fdisk := &q ...

  6. Uber SRE 实践:运维大型分布式系统的一些心得

    本文是 Uber 的工程师 Gergely Orosz 的文章,原文地址在:https://blog.pragmaticengineer.com/operating-a-high-scale-dist ...

  7. TiDB与MySQL的SQL差异及执行计划简析

    作者:京东零售 肖勇 一. 前言导读 TiDB作为NewSQL,其在对MySQL(SQL92协议)的兼容上做了很多,MySQL作为当下使用较广的事务型数据库,在IT界尤其是互联网间使用广泛,那么对于开 ...

  8. Kubernetes入门实践(环境搭建)

    容器技术只是解决了运维部署工作中的一个很小的问题,在现实生产环境中,除了最基本的安装,还会各式各样的需求,比如服务发现.负载均衡.状态监控.健康检查.扩容缩容.应用迁移.高可用等等.这些容器之上的管理 ...

  9. Linux进程管理(命令)入门

    进程是一个运行中的程序 进程查看 ps 能够查看当前终端下运行的进程 $ ps PID TTY TIME CMD 26305 pts/0 00:00:00 bash 26312 pts/0 00:00 ...

  10. Go语言网络编程: 模拟实现DNS服务器

    环境: 两台虚拟机,不限系统 写在前面 DNS服务器是干什么的?DNS服务器(Domain Name Server,域名服务器)是进行域名和与之相对应的IP地址进行转换的服务器,保存了一张域名和与之相 ...