Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм рисования exploded pie chart 
V
    Опции темы
Therion
Дата 20.4.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Доброе время суток. 
Нужен алгоритм рисования exploded pie chart. 
В наличии функция рисования обычного pie chart или pie chart с 3D тенью:
Код

void CPie::DrawItems()
{
    CPoint center = GetCenter();

    ChartDataSeriesType data = GetData();
    DataType degrees = 0;
    DataType arcCount = 0;
    DataType sum = std::accumulate(boost::get<0>(data).begin(), boost::get<0>(data).end(), 
        boost::numeric_cast<DataType>(0));

    std::vector<CColor>::const_iterator iter = GetColors().begin();

    foreach (DataType i, boost::get<0>(data))
    {
        degrees = (boost::numeric_cast<DataType>(360.00003) * i) / sum;
        CColor color = *iter;
        ++iter;

        CArc* arc1 = new CArc(this, center , GetRadius(), (GetDepth() > 0) ? (GetRadius() / 2) : GetRadius(), 
            arcCount, arcCount + degrees, color);

        // Draw 3D shadow
        if (GetDepth() > 0)
        {
            for (DataType j = center.Y * (DataType)1.05; j >= center.Y; j--) 
            {
                DataType end = arcCount + degrees;
                if ((arcCount + degrees) >= (DataType)180)
                {
                    if (arcCount < (DataType)180)
                        end = (DataType)180;
                    else
                        break;
                }

                CArc* arc2 = new CArc(this, CPoint(center.X, j), GetRadius(), GetRadius()/ 2,
                    arcCount, end, color.GetShadowColor(50));
            }
        }

        arcCount += degrees;
    }
}

Заранее благодарю за помощь.
PM MAIL   Вверх
Therion
Дата 7.9.2012, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 21.12.2003

Репутация: нет
Всего: нет



Решено
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.