Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Концентрические окружности 
:(
    Опции темы
decembrist
  Дата 6.7.2004, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Народ подскажите!
Создаю концентрические окружности внутри pDC->FillRgn

CRgn rgnEllipse;
rgnEllipse.CreateEllipticRgn(0, 0, 2*R1+1, 2*R1+1);

CBrush brBlack;
brBlack.CreateStockObject(BLACK_BRUSH);
pDC->FillRgn(&rgnEllipse, &brBlack);

Рисую в цикле
for(int i=R1; i>0; i--)
{
int color = int(255 - i*255/R1);
CPen pen(PS_SOLID, 3, RGB(0, 255, 0));
pDC->SelectObject(&pen);
CRect inRect(centerX-i,centerY-i, centerX+i,centerY+i);
dc.Ellipse(&inRect);
}
а у меня под конец все закрашивается внешним черным кругом Что делать?

PM MAIL   Вверх
SDem
Дата 6.7.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробуй вот так без твоих предыдущих строк:

for (int i = R1; i > 0; i--)
{
int color = int(255 - i*255 / R1);
CPen pen(PS_SOLID, 3, RGB(0, color, 0));
pDC->SelectObject(&pen);
CRect inRect(centerX-i,centerY-i, centerX+i,centerY+i);
pDC->Ellipse(&inRect);
}

PM MAIL   Вверх
decembrist
Дата 6.7.2004, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Все перекрывает внешний круг sad.gif
PM MAIL   Вверх
SDem
Дата 6.7.2004, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приведи весь свой код, ты не весь код дал, никакого внешнего круга в коде не рисуется
PM MAIL   Вверх
decembrist
Дата 6.7.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



void CEllipseDlg::OnPaint()
{
CPaintDC dc(this);
CDC *pDC = &dc;
const int R = 150;

for(int i=0; i<R; i++)
{
int color = int(255 - i*255 / R);

CPen pen(PS_SOLID, 2, RGB(0, color, 0));
pDC->SelectObject(&pen);
CRect inRect(R-i,R-i, R+i,R+i);
dc.Ellipse(&inRect);
}
}
PM MAIL   Вверх
Олег М
Дата 6.7.2004, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



По-моему сейчас должен быть белый круг.
Чтобы круги были прозрачными надо выбрать кисть GetStockObject(HOLLOW_BRUSH)
PM MAIL ICQ   Вверх
SDem
Дата 6.7.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Уже не совсем понятно что ты хочешь достичь, но попробуй вот это:

CBrush brush(RGB(0, color, 0));
pDC->SelectObject(&brush);

Вместо вот этого:

CPen pen(PS_SOLID, 2, RGB(0, color, 0));
pDC->SelectObject(&pen);
PM MAIL   Вверх
decembrist
Дата 7.7.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мне нужно нарисовать концентрические окружности с убыванием яркости цвета к внешнему кругу (эллипсу) Самый яркий центр notify.gif
PM MAIL   Вверх
Олег М
Дата 7.7.2004, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

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



В чём проблема-то. Делай как советует SDem, те при помощи кисти . Только не с убыванием а с возрастанием от внешнего к внутреннему. Все вроде парвильно раньше писал. Только непонятно зачем регион

PM MAIL ICQ   Вверх
SDem
Дата 7.7.2004, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Мне нужно нарисовать концентрические окружности с убыванием яркости цвета к внешнему кругу (эллипсу) Самый яркий центр


А, тогда сделай вот так:

for (int i = 0; i < R; i++)
{
int color = int(i*255 / R);

CPen pen(PS_SOLID, 2, RGB(0, color, 0));
pDC->SelectObject(&pen);
CRect inRect(i, i, 2*R-i, 2*R-i);
pDC->Ellipse(&inRect);
}
PM MAIL   Вверх
decembrist
Дата 7.7.2004, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пробовал, пробовал ...mad.gif Писал так:
void CEllipseDlg::OnPaint()
{
CPaintDC dc(this);
CDC *pDC = &dc;
const int R = 150;
for(int i=R; i<0; i--)
{
BYTE color = (BYTE)(255-abs(i*255/R-255));
CBrush brush(RGB(0, color, 0));
pDC->SelectObject(&brush);
CRect inRect(R-i,R-i, R+i,R+i);
dc.Ellipse(&inRect);

}
}
Результат - пустой диалог sad.gif

PM MAIL   Вверх
decembrist
Дата 7.7.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо SDem, у меня получилось biggrin.gif
PM MAIL   Вверх
SDem
Дата 7.7.2004, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Спасибо SDem, у меня получилось


Да не за что, обращайся! wink.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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