2011-05-24 81 views
4

我需要在应用程序中设置电压。我习惯于在Labview中使用滑块,并希望使用C#程序复制该滑块。如何在.net 3.5 trackbar中标记最小值,最大值和中心值?

我已经知道跟踪栏只有整数值,所以不用让范围从-5到5使用双精度值,我需要让跟踪栏从-50到+50打勾标记每10步获得0.1v分辨率。

如何标记轨迹栏的最小值和最大值?

| ----- | ----- | ----- | ----- | ----- | ----- | ----- | --- - | ----- | ----- |
-5.0                           0.0                               5.0

我使用C#和.NET 3.5和Visual Studio 。

回答

3

最简单的方法是添加2-3个标签,使用轨迹栏的高度/宽度/顶部/左侧和标签的组合,您应该能够相对放置它们而没有太多麻烦?

编辑:另外,它似乎this post显示一个自定义实现与您所描述的相同的要求?

2

TrackBar Scale Image Link

我所做的事是修改的图表和使用它的X轴的规模为规模为跟踪条(见链接,图像[我会嵌入图像,但我无法得到它的工作])。图像的上半部分是滑块,下半部分是常规图表对象,其属性已更改,因此唯一可见的是其X轴。

以下是TrackBar和Chart的VS2010表单设计器代码。这个例子会给你一个0到100的比例,可以很容易地调整大小以便与你的trackbar一致。你甚至可以把两个控件放在一个面板中,以便它们可以很容易地调整为一个(代码是VB而不是C#):

 Dim ChartArea2 As System.Windows.Forms.DataVisualization.Charting.ChartArea = New System.Windows.Forms.DataVisualization.Charting.ChartArea() 
    Dim Legend2 As System.Windows.Forms.DataVisualization.Charting.Legend = New System.Windows.Forms.DataVisualization.Charting.Legend() 
    Dim Series2 As System.Windows.Forms.DataVisualization.Charting.Series = New System.Windows.Forms.DataVisualization.Charting.Series() 
    Dim DataPoint2 As System.Windows.Forms.DataVisualization.Charting.DataPoint = New System.Windows.Forms.DataVisualization.Charting.DataPoint(0.0R, 0.0R) 
    Me.chart_slider = New System.Windows.Forms.DataVisualization.Charting.Chart() 
    Me.TrackBar1 = New System.Windows.Forms.TrackBar() 
    CType(Me.chart_slider, System.ComponentModel.ISupportInitialize).BeginInit() 
    CType(Me.TrackBar1, System.ComponentModel.ISupportInitialize).BeginInit() 
    Me.SuspendLayout() 
    ' 
    'chart_slider 
    ' 
    Me.chart_slider.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ 
     Or System.Windows.Forms.AnchorStyles.Left) _ 
     Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) 
    Me.chart_slider.BackColor = System.Drawing.Color.Transparent 
    ChartArea2.AxisX.LabelAutoFitMaxFontSize = 8 
    ChartArea2.AxisX.LabelAutoFitMinFontSize = 8 
    ChartArea2.AxisX.LineColor = System.Drawing.Color.Transparent 
    ChartArea2.AxisX.MajorGrid.Enabled = False 
    ChartArea2.AxisX.Maximum = 100.0R 
    ChartArea2.AxisX.Minimum = 0.0R 
    ChartArea2.AxisY.Interval = 1.0R 
    ChartArea2.AxisY.LineWidth = 0 
    ChartArea2.AxisY.MajorGrid.Enabled = False 
    ChartArea2.AxisY.MajorTickMark.Enabled = False 
    ChartArea2.AxisY.Maximum = 0.0R 
    ChartArea2.AxisY.Minimum = 0.0R 
    ChartArea2.AxisY.TitleForeColor = System.Drawing.Color.Transparent 
    ChartArea2.BackColor = System.Drawing.Color.Transparent 
    ChartArea2.InnerPlotPosition.Auto = False 
    ChartArea2.InnerPlotPosition.Height = 5.0! 
    ChartArea2.InnerPlotPosition.Width = 100.0! 
    ChartArea2.Name = "ChartArea1" 
    Me.chart_slider.ChartAreas.Add(ChartArea2) 
    Legend2.Enabled = False 
    Legend2.Name = "Legend1" 
    Me.chart_slider.Legends.Add(Legend2) 
    Me.chart_slider.Location = New System.Drawing.Point(186, 426) 
    Me.chart_slider.Name = "chart_slider" 
    Series2.ChartArea = "ChartArea1" 
    Series2.Legend = "Legend1" 
    Series2.Name = "Series1" 
    Series2.Points.Add(DataPoint2) 
    Me.chart_slider.Series.Add(Series2) 
    Me.chart_slider.Size = New System.Drawing.Size(441, 31) 
    Me.chart_slider.TabIndex = 160 
    Me.chart_slider.Text = "Chart1" 
    ' 
    'TrackBar1 
    ' 
    Me.TrackBar1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ 
     Or System.Windows.Forms.AnchorStyles.Left) _ 
     Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) 
    Me.TrackBar1.Location = New System.Drawing.Point(191, 398) 
    Me.TrackBar1.Margin = New System.Windows.Forms.Padding(3, 3, 3, 0) 
    Me.TrackBar1.Name = "TrackBar1" 
    Me.TrackBar1.RightToLeftLayout = True 
    Me.TrackBar1.Size = New System.Drawing.Size(423, 45) 
    Me.TrackBar1.TabIndex = 1 
    ' 
    'Form1 
    ' 
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 
    Me.ClientSize = New System.Drawing.Size(690, 498) 
    Me.Controls.Add(Me.TrackBar1) 
    Me.Controls.Add(Me.chart_slider) 
    Me.Name = "Form1" 
    Me.Text = "Form1" 
    CType(Me.chart_slider, System.ComponentModel.ISupportInitialize).EndInit() 
    CType(Me.TrackBar1, System.ComponentModel.ISupportInitialize).EndInit() 
    Me.ResumeLayout(False) 
    Me.PerformLayout() 
+0

一种黑客,但非常漂亮。提供一个很好的结果。正是我需要的!非常感谢!也许它可以用更通用的方式进行编码,所以如果TrackBar的某些属性发生变化,ChartArea会自动更改。 :-) – itmuckel 2016-07-22 09:16:45

相关问题