Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Прорисовка спектра BASS


Автор: Deutscher 6.7.2012, 21:36
Доброго всем времени суток!

Сразу к делу есть вот твкая функция
Код

void UpdateSpectrum(HWND hWnd)
{
    float fft[1024];
    BASS_ChannelGetData(hStream, fft, BASS_DATA_FFT2048);

    RECT rc;
    GetClientRect(hWnd, &rc);

    HDC hdc = GetDC(hWnd);

    InvalidateRect(hWnd, NULL, TRUE);

    int y, height, width;
    int Peaks[128];

    height = rc.bottom - 2;
    width = 2;

    for (int i = 0; i < 55; i++)
    {
        y = floor(fft[i + 5] * 500);
        
        if (y > height)
        {
            y = height;
        }

        if (y >= Peaks[i])
        {
            Peaks[i] = y - 1;
        }
        else
        {    
            Peaks[i] = y - 3;
        }

        if (height - Peaks[i] > height)
        {
            Peaks[i] = 0;
        }

        Rectangle(hdc, i * (width + 1), height - Peaks[i], i * (width + 1) + width, height);
    }
    ReleaseDC(hWnd, hdc);
}


она рисует спектр звука но рисует оч плохо мерцает сильно. smile 
помогите пожалуиста избавиться от мерцания.

Или может у кого есть похожая функция желательно на winapi.  smile 

Всем заранее спасибо!!!!


M
feodorv
Пожалуйста, для выделения кода пользуйтесь кнопочкой "Код".

Автор: feodorv 6.7.2012, 22:30
А к чему там InvalidateRect???

Автор: Dem_max 7.7.2012, 04:29
скачай готовый пример от BASS там все есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)