根据音量级别更改字符串的字体颜色,但保留原始颜色

时间:2016-12-09 11:34:31

标签: c# winforms

嗨,我想知道是否有人可以提供帮助。我设法创建了一个体积计,我正在使用管道“|”视觉显示的字符。我能够根据音量峰值级别更改颜色,并且工作正常,但所有字符的字体颜色都会发生变化。然而,我所追求的是保留原始颜色。因此,管道串显示绿色,黄色,橙色,然后是红色。这是我的代码......所以问题是我如何保留原始字体颜色,但在音量开始达到峰值时更改新的字体颜色。如果那有意义的话。非常感谢。

public void audiometering()
{
    // start timer and select the volume value
    vmt.Start();
    MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
    var volume = defaultDevice.AudioMeterInformation.MasterPeakValue;
    var scale = (int)Math.Floor(volume * 20);
    vUMonitorToolStripMenuItem.Text = volume.ToString();
    // calculate scale of volume and display as pipes
    var sb = new StringBuilder();
    sb.Append('|', scale);
    sb.Append(' ', 20 - scale);
    vUMonitorToolStripMenuItem.Font = new Font(vUMonitorToolStripMenuItem.Font, FontStyle.Bold);

    if ((scale <= 5))
    {
        vUMonitorToolStripMenuItem.ForeColor = Color.Green;
    }
    if ((scale >= 5 && scale <= 10))
    {
        vUMonitorToolStripMenuItem.ForeColor = Color.Yellow;
    }
    if ((scale >= 10 && scale <= 15))
    {
        vUMonitorToolStripMenuItem.ForeColor = Color.Orange;
    }
    if ((scale >= 15))
    {
        vUMonitorToolStripMenuItem.ForeColor = Color.Red;
    }
    vUMonitorToolStripMenuItem.Text = sb.ToString();
}

0 个答案:

没有答案