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. Windows10彻底关闭自动更新

    此文操作流程只针对于Windows10 1803及以下版本,更新版本未测试. Windows10在本地组策略编辑器禁用了自动更新,系统依然会在某个时候触发自动更新,怎么办呢,方法来了. 这个方法是结合 ...

  2. 从pcap文件中提取pcma音频

    操作系统 :Windows10_x64 .CentOS 7.6.1810_x64 wireshark版本:3.6.12 Python 版本  :  3.9.12 一.背景描述 工作中有时候会遇到需要从 ...

  3. 动手造轮子自己实现人工智能神经网络(ANN),解决鸢尾花分类问题Golang1.18实现

    人工智能神经网络( Artificial Neural Network,又称为ANN)是一种由人工神经元组成的网络结构,神经网络结构是所有机器学习的基本结构,换句话说,无论是深度学习还是强化学习都是基 ...

  4. Flutter 异步编程指南

    作者:京东物流 王志明 1 Dart 中的事件循环模型 在 App 开发中,经常会遇到处理异步任务的场景,如网络请求.读写文件等.Android.iOS 使用的是多线程,而在 Flutter 中为单线 ...

  5. React的行内样式与CSS

    如何为组件添加 CSS 的 class? 传递一个字符串作为 className 属性: render() { return <span className="menu navigat ...

  6. tidyr包几个函数的用法

    在R语言中,tidyr主要提供了一个类似Excel中数据透视表 (pivottable)的功能; gather和spread函数将数据在长格式和宽格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转 ...

  7. cephadm 安装部署 ceph 集群

    介绍 手册: https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/html/architecture_guide/ ...

  8. 使用HTMLform表单操作腾讯云DNS控制台

    在使用中经常需要修改DNS记录,或者查询.删除操作.每次都得登录腾讯云控制台,腾讯云比较鸡肋的一点就是需要进行微信扫码登录,每次操作太不方便. 可以使用api接口进行操作腾讯云上的产品.所以使用HTM ...

  9. python入门教程之十九cgi编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

  10. HTTP.sys漏洞的检测和修复(附补丁包下载)

    关于这个 HTTP.sys 漏洞,查了一些资料,没有一个写的比较全的,下面我来整理下. 这个漏洞主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server ...