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. Mybatis # 与 $ 符号区别

    一.区别 1.不同点: 以#{}方式传入参数,预编译时,它会将sql中的#{}替换为?,然后编译sql时,会把值两端加上 双引号.有效防止sql注入,保证数据安全. sql注入:通过把SQL命令插入到 ...

  2. Vue指令:内置指令和自定义指令

    Vue指令 Vue指令指的是,以v-开头的一组特殊语法 内置指令 v-text v-text指令的作用是:设置标签的内容 默认写法会替换全部内容,差值表达式{{ }}只会替换指定内容 内部支持写表达式 ...

  3. 来自jackson的灵魂一击:@ControllerAdvice就能保证万无一失吗?

    前几天写了篇关于fastjson的文章,<fastjson很好,但不适合我>.里面探讨到关于对象循环引用的序列化问题.作为spring序列化的最大竞品,在讨论fastjson的时候肯定要对 ...

  4. JSF预热功能在企业前台研发部的实践与探索

    作者:京东零售 李孟东 00 导读 企业前台研发部包含了企业业务大部分的对外前台系统,其中京东VOP平台(开放平台)适合于自建内网采购商城平台的企业客户. 京东为这类客户专门开发API接口,对接到客户 ...

  5. java idea配置流程

    这篇文章主要介绍了IntelliJ IDEA2021.1 配置大全(超详细教程),需要的朋友可以参考下 一.IDEA下载 idea.jdk.tomcat.maven下载地址请参考上一篇博客:https ...

  6. [Linux]Linux发展历程

    古人云,知其然知其所以然.马哲思想指导着我们,任何事物.问题,离不开:为什么(Why,事物从哪里来?).是什么(What,事物的定位?).怎么做(How,到哪里去?)的哲学3问. 继上个月算是相对彻底 ...

  7. 颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模版(Resume)

    一年好景君须记,最是橙黄橘绿时.金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都要沿着嘴角流下来了.本次我们基于H ...

  8. Kubernetes集群调度增强之超容量扩容

    作者:京东科技 徐宪章 1 什么是超容量扩容 超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容.通常情况 ...

  9. cocos2d-x返回Android游戏黑屏解决办法

    返回Android游戏黑屏解决办法这几天逛cocos2d-x.org论坛,发现cocos2d-x的作者放出来一个帖子,用来解决返回Android游戏加载资源时黑屏的问题.帖子过些日子估计就沉了,所以转 ...

  10. MAPPO学习笔记(1):从PPO算法开始

    由于这段时间的学习内容涉及到MAPPO算法,并且我对MAPPO算法这种多智能体算法的信息交互机制不甚了解,于是写了这个系列的笔记,目的是巩固知识,并且进行一些粗浅又滑稽的总结. 1.PPO算法的介绍 ...