【问题标题】:Trackbar with a level indicator inside the track?轨道内带有水平指示器的轨道栏?
【发布时间】:2014-02-11 15:20:23
【问题描述】:

我想知道是否有办法在 .NET TrackBar 的轨道内设置电平指示器?

我的使用场景是这样的。我需要一个音频静噪控制。所以我想使用TrackBar,用户在 0 到 100 之间拖动静噪。但同时我想在TrackBar 的轨道中显示当前的音频电平。以便用户知道当前音频电平与静噪的关系。

有什么建议吗?这是我需要覆盖TrackBar 的绘制方法的东西吗?或者我可以在某个地方使用免费控件吗?

【问题讨论】:

  • 就像在某处的一些额外的浮动文本中一样?还是直接画在滑块上?还是……?
  • 理想情况下,它应该被绘制为轨迹条轨迹内的颜色条。
  • TrackBar 派生一个新控件并覆盖OnPaintBackground,然后绘制您的彩色区域。
  • 它是一个原生的Windows组件,它不支持任何自定义绘图。替换而不是尝试增强。来自“自定义轨迹栏控件”的大量谷歌点击。

标签: c# .net winforms trackbar


【解决方案1】:

这并不像看起来那么容易。不能简单地增加TrackBar 控件的外观。您必须通过将以下行添加到派生自TrackBar 的类的构造函数来触发UserPaint

SetStyle(ControlStyles.UserPaint, true);

然而,这将迫使您拥有这幅画的全部。这意味着您需要同时覆盖 OnPaintOnPaintBackground 并使用 TrackBarRenderer 中的方法来绘制整个控件。

话虽如此,给你的方法还是很简单的,绘制控件也比较容易。

注意:如果您决定追求全面的自定义绘图,this Code Project article 一定会有很多好的建议。也许甚至可以作为您的替代控件。

还有其他的。只需在 Google 上搜索“C# TrackBar custom draw”即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多