国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF中有中心點(diǎn)的slider滑動條

這篇具有很好參考價值的文章主要介紹了WPF中有中心點(diǎn)的slider滑動條。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

想要實(shí)現(xiàn)的效果

WPF中有中心點(diǎn)的slider滑動條

原生滑動條

WPF中有中心點(diǎn)的slider滑動條

需要認(rèn)識一下滑動條的組成

WPF中有中心點(diǎn)的slider滑動條

  • 在原生控件中生成“資源字典”對應(yīng)的樣式
  • 然后在track所在的列進(jìn)行添磚加瓦
  • 由于track在row="1"的位置,只需要在這個位置上面添加一個Ellipse和Line
  • Ellipse是來描述固定在滑動條上的中心點(diǎn)的位置
  • line是來描述Thumb從中心點(diǎn)移動到其他位置顯示的顏色

具體的自定樣式修改

SliderHorizontal樣式

<Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" />
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <TickBar
      x:Name="TopTick"
      Grid.Row="0"
      Height="4"
      Margin="0,0,0,2"
      Fill="{TemplateBinding Foreground}"
      Placement="Top"
      Visibility="Collapsed" />
    <TickBar
     x:Name="BottomTick"
     Grid.Row="2"
     Height="4"
     Margin="0,2,0,0"
     Fill="{TemplateBinding Foreground}"
     Placement="Bottom"
     Visibility="Collapsed" />
     <Border
     x:Name="TrackBackground"
     Grid.Row="1"
     Height="4.0"
     Margin="5,0"
     VerticalAlignment="center"
     Background="{StaticResource SliderThumb.Track.Border}"
     BorderBrush="{StaticResource SliderThumb.Track.Border}"
     BorderThickness="1">
     <Canvas Margin="-6,-1">
       <Rectangle
        x:Name="PART_SelectionRange"
        Height="4.0"
        Fill="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
        Visibility="Hidden" />
      </Canvas>
     </Border>
      <Ellipse
       Grid.Row="1"
       Width="10"
       Height="10"
       Fill="Black" />
      <Line
      Grid.Row="1"
      Grid.RowSpan="3"
      VerticalAlignment="Center"
      Fill="Purple"
      Stroke="Purple"
      StrokeThickness="3"
      X1="{Binding Path=LineX1, RelativeSource={RelativeSource TemplatedParent}}"
      X2="{Binding Path=LineX2, RelativeSource={RelativeSource TemplatedParent}}"
      Y1="0"
      Y2="0" />
     <Track x:Name="PART_Track" Grid.Row="1">
        <Track.DecreaseRepeatButton>
             <RepeatButton Command="{x:Static Slider.DecreaseLarge}" Style="{StaticResource RepeatButtonTransparent}" />
              </Track.DecreaseRepeatButton>
               <Track.IncreaseRepeatButton>
              <RepeatButton Command="{x:Static Slider.IncreaseLarge}" Style="{StaticResource RepeatButtonTransparent}" />
        </Track.IncreaseRepeatButton>
           <Track.Thumb>
            <Thumb
             x:Name="Thumb"
             Width="11"
             Height="18"
             VerticalAlignment="Center"
             Focusable="False"
             OverridesDefaultStyle="True"
             Template="{StaticResource SliderThumbHorizontalDefault}" />
             </Track.Thumb>
           </Track>
</Grid>

主要顏色距離的顯示通過X1和X2的編輯顯示距離

WPF中有中心點(diǎn)的slider滑動條

  • 所以需要將這里的X1和X2改成自定義進(jìn)行綁定
  • 新建自定義控件

自定義控件CentreSlider

public class CentreSlider : Slider {
        protected override void OnValueChanged(double oldValue, double newValue) {
            base.OnValueChanged(oldValue, newValue);
            RefreshSlider();
        }
        protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo) {
            base.OnRenderSizeChanged(sizeInfo);
            RefreshSlider();
        }
        public double LineX1 {
            get { return (double)GetValue(LineX1Property); }
            set { SetValue(LineX1Property, value); }
        }
        public double LineX2 {
            get { return (double)GetValue(LineX2Property); }
            set { SetValue(LineX2Property, value); }
        }

        // Using a DependencyProperty as the backing store for LineX2.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty LineX2Property =
            DependencyProperty.Register("LineX2", typeof(double), typeof(CentreSlider), new PropertyMetadata(0.0));
        // Using a DependencyProperty as the backing store for LineX1.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty LineX1Property =
            DependencyProperty.Register("LineX1", typeof(double), typeof(CentreSlider), new PropertyMetadata(0.0));

        public void RefreshSlider() {
            var Proportion = ActualWidth / Maximum;
            LineX1 = ActualWidth / 2;
            LineX2 = Value * Proportion;
        }
    }

最終效果

WPF中有中心點(diǎn)的slider滑動條

文章來源地址http://www.zghlxwxcb.cn/news/detail-476763.html

到了這里,關(guān)于WPF中有中心點(diǎn)的slider滑動條的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • UE4中修改模型的中心點(diǎn)

    UE4中修改模型的中心點(diǎn)

    在UE4中的模型中心點(diǎn)一般都在模型的中點(diǎn),如果是門這樣的模型,我們就不能繞中心點(diǎn)旋轉(zhuǎn)了,不然會覺得很奇怪。但是默認(rèn)的靜態(tài)網(wǎng)格體中心點(diǎn)都在物體中心,那我們怎么辦?有兩種方法: 1.我們就需要移動物體的中心點(diǎn) 2.在三維建模軟件中移動模型中心點(diǎn) 下面我們就討論

    2023年04月08日
    瀏覽(99)
  • Unity將模型的世界坐標(biāo)下的中心點(diǎn)歸到模型中心

    Unity將模型的世界坐標(biāo)下的中心點(diǎn)歸到模型中心

    效果對比: 調(diào)整前: 調(diào)整后: 需求:由于建模時的疏忽或者網(wǎng)上找的一些測試模型不規(guī)范,會出現(xiàn)導(dǎo)入unity中,模型的世界坐標(biāo)下的中心點(diǎn)與模型實(shí)際的位置差出很多。 注意:物體中心點(diǎn)和父物體中心點(diǎn)的設(shè)置代碼隱忍而異,看模型結(jié)構(gòu)需求 注意:這里模型的位置必須Re

    2024年02月03日
    瀏覽(92)
  • uniapp小程序地圖設(shè)置中心點(diǎn)位置向上偏移

    uniapp小程序地圖設(shè)置中心點(diǎn)位置向上偏移

    圖示: id=\\\"map\\\" ref=\\\"map\\\"

    2024年02月11日
    瀏覽(88)
  • vue canvas拖拽,鼠標(biāo)中心點(diǎn)縮放,標(biāo)記點(diǎn)位等

    vue實(shí)現(xiàn)canvas畫布建立圖片,坐標(biāo)建立,可進(jìn)行拖拽,鼠標(biāo)中心點(diǎn)位縮放,標(biāo)記點(diǎn)位等功能 直接上源碼 僅供學(xué)習(xí)使用

    2024年02月17日
    瀏覽(88)
  • 高德API JS 高德地圖獲取多個坐標(biāo)點(diǎn)的中心點(diǎn)

    高德API JS 高德地圖獲取多個坐標(biāo)點(diǎn)的中心點(diǎn)

    我需要: 在地圖上展示多個地點(diǎn) 地圖縮放到合適的大小,要求剛好能顯示全部點(diǎn)位 邊緣留有一部分間隔。 做成如圖所示這樣。 經(jīng)過一下午的研究,弄出來了。 需要以下這些 AMap 的類庫: AMap.Bounds() 區(qū)域 AMap.LngLat() 點(diǎn)坐標(biāo)(基礎(chǔ)點(diǎn)位) AMap.setBounds() 設(shè)置地圖區(qū)域,這會自動

    2024年02月07日
    瀏覽(220)
  • Unity中如何修改精靈(Sprite)的中心點(diǎn)(Pivot)位置

    在Unity中,精靈(Sprite)是游戲中最常用的圖形資源之一。精靈的中心點(diǎn)(Pivot)決定了它的旋轉(zhuǎn)和縮放的中心位置。默認(rèn)情況下,精靈的中心點(diǎn)位于其包圍盒(Bounding Box)的中心。然而,在某些情況下,我們可能需要將精靈的中心點(diǎn)設(shè)置為不同的位置,以便更好地適應(yīng)特定的需求

    2024年02月04日
    瀏覽(206)
  • Android雙指縮放ScaleGestureDetector檢測放大因子大圖移動到雙指中心點(diǎn)ImageView區(qū)域中心,Kotlin

    Android雙指縮放ScaleGestureDetector檢測放大因子大圖移動到雙指中心點(diǎn)ImageView區(qū)域中心,Kotlin

    ? 在?Android雙擊圖片放大移動圖中雙擊點(diǎn)到ImageView區(qū)域中心,Kotlin-CSDN博客 基礎(chǔ)上,這次使用ScaleGestureDetector檢測兩根手指的縮放動作,記錄兩根手指的中心點(diǎn)位置,根據(jù)ScaleGestureDetector檢測到的縮放因子(系數(shù)),放大原圖,并移動放大前兩根手指中心點(diǎn)在原圖的位置移動到

    2024年01月23日
    瀏覽(28)
  • CSS 圓形的時鐘秒針狀的手柄繞中心點(diǎn)旋轉(zhuǎn)的效果
  • 已知中心點(diǎn)、長寬和旋轉(zhuǎn)角度,求矩形的四個頂點(diǎn)坐標(biāo)(Python)

    已知中心點(diǎn)、長寬和旋轉(zhuǎn)角度,求矩形的四個頂點(diǎn)坐標(biāo)(Python)

    本次實(shí)現(xiàn)有幾個前提: 已知的信息如下形式:[x_center, y_center, w, h, angle],其中默認(rèn) w w w 是矩形最長的邊,即 w h w h w h 。 已知的旋轉(zhuǎn)角度 θ theta θ 是矩形的最長邊 w w w 相對于 x x x 坐標(biāo)軸的旋轉(zhuǎn)角度 旋轉(zhuǎn)角度 θ theta θ 的旋轉(zhuǎn)區(qū)間在 [ 0 , π ] [0, pi] [ 0 , π ] 可以將情況分為兩

    2024年02月05日
    瀏覽(388)
  • 【賞】three.js如何確定3dtile格式的模型的中心點(diǎn)和縮放比例

    three.js如何確定3dtile格式的模型的中心點(diǎn)和縮放比例。 有多個3dtile格式的模型(tileset.json + b3dm),請問如何確定合適的比例?即在three.js中如何確定像機(jī)的位置和縮放比例? 在three.js中確定3D模型的中心點(diǎn)和縮放比例通常需要以下步驟: 加載3D模型。使用three.js的加載器(例如

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包