2つの親指でカスタムスライダを作成する方法1つは、より高い範囲を表すためであり、もう1つは、より低い範囲を表すためである例えば価格帯。値が50未満の場合は低い方の範囲を表し、50を超える場合は高い方の範囲を表します。2つの親指でカスタムスライダを実装するにはどうすればよいですか?
5
A
答えて
6
これはあまり問題ではありません。私はそれをすべて行うことはありませんが、私は、あなたが開始されます:このコードビハインド
<Grid Background="Black">
<Grid Height="100" Width="500" Background="DimGray">
<Grid.Resources>
<Style TargetType="Grid" x:Name="HandleStyle">
<Setter Property="Height" Value="50" />
<Setter Property="Width" Value="50" />
<Setter Property="Background" Value="White" />
<Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
</Style>
<Style TargetType="TextBlock" x:Name="HandleTextStyle">
<Setter Property="Foreground" Value="DimGray" />
<Setter Property="FontSize" Value="20" />
<Setter Property="TextAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
</Grid.Resources>
<Rectangle Height="10" Width="450" Fill="DarkGray" />
<Grid x:Name="LeftHandle" Style="{StaticResource HandleStyle}"
ManipulationMode="TranslateX"
ManipulationDelta="LeftHandle_ManipulationDelta">
<Grid.RenderTransform>
<CompositeTransform TranslateX="-200"/>
</Grid.RenderTransform>
<TextBlock x:Name="LeftHandleText" Text="0"
Style="{StaticResource HandleTextStyle}" />
</Grid>
<Grid x:Name="RightHandle" Style="{StaticResource HandleStyle}"
ManipulationMode="TranslateX"
ManipulationDelta="RightHandle_ManipulationDelta" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<CompositeTransform TranslateX="-150"/>
</Grid.RenderTransform>
<TextBlock x:Name="RightHandleText" Text="0"
Style="{StaticResource HandleTextStyle}" />
</Grid>
</Grid>
</Grid>
用途:
int Min = 0;
int Max = 100;
int Size = 100;
int Range = 200;
private void LeftHandle_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var t = (sender as Grid).RenderTransform as CompositeTransform;
var x = (RightHandle.RenderTransform as CompositeTransform).TranslateX;
var f = -this.Range;
var c = x - this.Size * .5;
t.TranslateX = Translate(t, e, f, c);
LeftHandleText.Text = Text(t.TranslateX);
}
private void RightHandle_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var t = (sender as Grid).RenderTransform as CompositeTransform;
var x = (LeftHandle.RenderTransform as CompositeTransform).TranslateX;
var f = x + this.Size * .5;
var c = this.Range;
t.TranslateX = Translate(t, e, f, c);
RightHandleText.Text = Text(t.TranslateX);
}
private double Translate(CompositeTransform s, ManipulationDeltaRoutedEventArgs e, double floor, double ceiling)
{
var target = s.TranslateX + e.Delta.Translation.X;
if (target < floor)
return floor;
if (target > ceiling)
return ceiling;
return target;
}
private string Text(double x)
{
var p = (x - (-this.Range))/((this.Range) - (-this.Range)) * 100d;
var v = (this.Max - this.Min) * p/100d + this.Min;
return ((int)v).ToString();
}
がよさそうだ:運のベスト
!
+0
Nixon親指間の距離はどうやって分かりますか?あなたのコードにフィルトラックを追加しようとしています – alfah
2
@ジェリーニクソンのコードに基づいて、私はレンジコントロールを作成しました。私はカスタムコントロールを作成する方法を知らない。ですから、単に私のような欲望の魂のためにプロジェクトをGitHubに入れて、コントロールを探している人は、気軽に投稿したり、問題を提出してください。時間が許せばそれで動くでしょう。
https://github.com/alfah-plackal/CustomSlider
コードがあなたと一緒かもしれません!
関連する問題
- 1. 親から2つのコマンドを並列に実行するにはどうすればよいですか?
- 2. AppCompatActivityを2つのフラグメントに実装するにはどうすればよいですか?
- 3. Comparableインターフェイスを実装して2つのオブジェクトを比較するにはどうすればよいですか?
- 4. Ionic 2/Angular 2プロジェクトでVideogularを実装するにはどうすればよいですか?
- 5. スイングでフェードボタンエフェクトを実装するにはどうすればよいですか?
- 6. Xamarinでドキュメントプロバイダエクステンションを実装するにはどうすればよいですか?
- 7. Jadeでoninputを実装するにはどうすればよいですか?
- 8. Require.jsでTinyMCEを実装するにはどうすればよいですか?
- 9. iPhoneでセッションタイムアウトを実装するにはどうすればよいですか?
- 10. nativescriptでビデオコールを実装するにはどうすればよいですか?
- 11. ES6でAngularJSを実装するにはどうすればよいですか?
- 12. JavaScriptでpostMessage()を実装するにはどうすればよいですか?
- 13. PHPでコールバックを実装するにはどうすればよいですか?
- 14. C#でスレッドアフィニティを実装するにはどうすればよいですか?
- 15. レールでアクセスログを実装するにはどうすればよいですか?
- 16. FlashでRichTextEditorを実装するにはどうすればよいですか?
- 17. ライブラリプロジェクトでアプリケーションインデックスを実装するにはどうすればよいですか?
- 18. Androidでウェブフックを実装するにはどうすればよいですか?
- 19. Reactでトランジションアニメーションを実装するにはどうすればよいですか?
- 20. イオンアプリでダイナミックテーマを実装するにはどうすればよいですか?
- 21. ページスクロールでアニメーションを実装するにはどうすればよいですか?
- 22. jQueryでオプションを実装するにはどうすればよいですか?
- 23. ShapelessでToTraversableを実装するにはどうすればよいですか?
- 24. アンドロイドスタジオでコードを実装するにはどうすればよいですか?
- 25. IronPythonでインターフェイスを実装するにはどうすればよいですか?
- 26. neo4jでリビジョンを実装するにはどうすればよいですか?
- 27. Cでアクセス指定子を実装するにはどうすればよいですか?
- 28. Rustでデータ指向設計を実装するにはどうすればよいですか?
- 29. コアデータに親子関係を実装するにはどうすればよいですか?
- 30. Facebookのログインボタンを実装するにはどうすればよいですか?
以前にカスタムコントロールを作成しましたか? –
回答に印をつけたいですか? –