C# 显示EQ图像的更高效代码

C# 显示EQ图像的更高效代码,c#,winforms,timer,picturebox,naudio,C#,Winforms,Timer,Picturebox,Naudio,基本上我所做的就是使用NAudio来获取峰值信息。我已经制作了一组20幅图像,它们将代表等式。我已经编写了一些代码来检查峰值,并使用计时器实时更改picturebox中的图像。虽然有时我会看到视觉滞后,我认为代码效率很低。还有比这一大块ifs更有效的代码吗 private void EQ_TIMER_Tick(object sender, EventArgs e) { int vol = (int)((float)(device.AudioMeterInformation

基本上我所做的就是使用NAudio来获取峰值信息。我已经制作了一组20幅图像,它们将代表等式。我已经编写了一些代码来检查峰值,并使用计时器实时更改picturebox中的图像。虽然有时我会看到视觉滞后,我认为代码效率很低。还有比这一大块ifs更有效的代码吗

private void EQ_TIMER_Tick(object sender, EventArgs e)
    {
        int vol = (int)((float)(device.AudioMeterInformation.MasterPeakValue * 100));
        if ((vol > 0) && (vol < 5))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ5;
        }
        else if ((vol > 5) && (vol < 10))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ10;
        }
        else if ((vol > 10) && (vol < 15))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ15;
        }
        else if ((vol > 15) && (vol < 20))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ20;
        }
        else if ((vol > 20) && (vol < 25))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ25;
        }
        else if ((vol > 25) && (vol < 30))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ30;
        }
        else if ((vol > 30) && (vol < 35))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ35;
        }
        else if ((vol > 35) && (vol < 40))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ40;
        }
        else if ((vol > 40) && (vol < 45))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ45;
        }
        else if ((vol > 45) && (vol < 50))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ50;
        }
        else if ((vol > 50) && (vol < 55))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ55;
        }
        else if ((vol > 55) && (vol < 60))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ60;
        }
        else if ((vol > 60) && (vol < 65))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ65;
        }
        else if ((vol > 65) && (vol < 70))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ70;
        }
        else if ((vol > 70) && (vol < 75))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ75;
        }
        else if ((vol > 75) && (vol < 80))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ80;
        }
        else if ((vol > 80) && (vol < 85))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ85;
        }
        else if ((vol > 85) && (vol < 90))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ90;
        }
        else if ((vol > 90) && (vol < 95))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ95;
        }
        else if ((vol > 95) && (vol < 100))
        {
            WINGS_FRAME.Image = Properties.Resources.RES_EQ100;
        }
        else if (vol == 0)
        {
            WINGS_FRAME.Image = null;
        }
    }
private void EQ_TIMER_Tick(对象发送方,事件参数e)
{
int vol=(int)((float)(device.AudioMeterInformation.MasterPeakValue*100));
如果((音量>0)和(&(音量<5))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ5;
}
如果((第5卷)和&(第10卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ10;
}
如果((第10卷)和&(第15卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ15;
}
否则,如果((第15卷)和(第20卷))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ20;
}
如果((第20卷)和&(第25卷))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ25;
}
否则,如果((第25卷)和(第30卷))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ30;
}
如果((第30卷)和&(第35卷))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ35;
}
否则,如果((第35卷)和(第40卷))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ40;
}
如果((音量>40)和(&(音量<45))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ45;
}
否则,如果((第45卷)和((第50卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ50;
}
否则,如果((体积>50)和(&(体积<55))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ55;
}
如果((第55卷)和&(第60卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ60;
}
如果((第60卷)和&(第65卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ65;
}
否则,如果((第65卷)和(第70卷))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ70;
}
如果((音量>70)和(&(音量<75))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ75;
}
否则,如果((体积>75)和(&(体积<80))
{
WINGS\u FRAME.Image=Properties.Resources.RES\u EQ80;
}
否则,如果((体积>80)和(&(体积<85))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ85;
}
否则,如果((体积>85)和(&(体积<90))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ90;
}
如果((体积>90)和(&(体积<95))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ95;
}
否则,如果((体积>95)和(&(体积<100))
{
WINGS_FRAME.Image=Properties.Resources.RES_EQ100;
}
否则如果(vol==0)
{
WINGS_FRAME.Image=null;
}
}

尝试以下方法:

int vol = 38;
int imgnum = vol/5*5;
string imgname = string.Format("RES_EQ{0}", imgnum);

var image = Properties.Resources.ResourceManager.GetObject(imgname);

整数除法将音量“四舍五入”到一个步长,然后乘以5得到图像的实际数字。

尝试以下方法:

int vol = 38;
int imgnum = vol/5*5;
string imgname = string.Format("RES_EQ{0}", imgnum);

var image = Properties.Resources.ResourceManager.GetObject(imgname);

整数除法将音量“四舍五入”到一个步长,然后乘以5得到图像的实际数字。

太好了!效果更好!太好了!效果更好!