初接触wpf,想自己用图片做一个个性slider滑块控件,网上找了很久无果。后来一些机缘巧合看别人源码的时候找到了类似的,然后自己再查了一下msdn,大概弄懂了。
我们先来看看slider控件组成元素。
Slider控件组成:
用图片自定义thumb(滑块):
<Style x:Key="SliderThumbStyle" TargetType="{x:Type Thumb}"> <Setter Property="SnapsToDevicePixels" Value="True" /> <Setter Property="OverridesDefaultStyle" Value="True" /> <Setter Property="Height" Value="133" /> <Setter Property="Width" Value="211" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Rectangle> <Rectangle.Fill> <ImageBrush ImageSource="Assets/thumb.png" Stretch="None"/> </Rectangle.Fill> </Rectangle> </ControlTemplate> </Setter.Value> </Setter> </Style>
RepeatButton自定义类似上述
需要知道RepeatButton分两部分,一部分滑块是划过的区域,一部分是滑块还没滑过的区域。
相关说明:
SnapsToDevicePixels可以将此特性添加到您的根元素的true启用呈现在 UI 中的像素对齐。对运行在大于 96每英寸点数 (dpi)的计算机,像素的呈现最大程度地减少抗锯齿可视化项目在一个度量单位的实线附近。
如果设置OverridesDefaultStyle到控件的true,则会禁止显示主题样式提供的默认控件模板。
Template获取或设置控件模板。
Rectangle绘制一个矩形形状,该形状可以具有笔画和填充。
Fill获取或设置指定形状内部绘制方式的Brush
Stretch获取或设置一个Stretch 枚举值,该值描述形状如何填充为它分配的空间(对于Ellipse 或Rectangle,默认Stretch行为是 Fill,因为它们的整个调整大小逻辑都基于Width 和Height。将Ellipse 或Rectangle 的Stretch设置为 None 可以有效地使其不呈现出来。)
System.Windows.Shapes提供对可在可扩展应用程序标记语言 (XAML)或代码中使用的基本形状库的访问。同时还包括 Path 类,该类可以加载路径数据,以便通过对象模型或内联格式描述复合几何图形。
TriggerWPF 样式和模板化模型允许在 Style 内部指定触发器。从本质上讲,触发器是可以让您在某些条件(例如某个属性值变为 true或者某个事件发生时)得到满足时应用更改的对象。
Track表示一个处理Thumb 控件的定位和大小调整的控件基元和两个用于设置Value 的RepeatButton 控件。
Orientation获取或设置Slider 的方向。Vertical垂直。Horizontal水平
绘图相关:
绘制一个椭圆。 |
|
在两个点之间绘制一条直线。 |
|
绘制一系列相互连接的直线和曲线。 直线和曲线维度通过 Data 属性声明,并且可以使用 Path 特定的 mini-language 或使用对象模型来指定。 |
|
绘制一个多边形,它是形成闭合形状的一系列相互连接的直接。 |
|
绘制一系列相互连接的直线。 |
|
绘制一个矩形形状,该形状可以具有笔画和填充。 |
|