Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Графика, CDC - как смешать "слои"?

34K
07 февраля 2008 года
T_Volkova_81
3 / / 07.02.2008
Я делаю класс для графиков, хотелось бы осуществить рисование в несколько слоев, приерно как в photoshop. Например, нижний слой - подложка, на одном слое рисую кривые, относящиеся к левой оси, на другом - к правой. На всех слоях, кроме нижнего, все точки, которые я добавляю - непрозрачные, остальное - прозрачное. Если меняется минимум/максимум по одной из осей, перересовывается только соответствующий слой. В OnPaint слои смешиваются. Как это реализовать? Есть мысль сначала заливать слой черным, при смешивании - BitBlt c SRCPAINT, но тогда при пересечении кривых будет непонятный цвет.
Дело в том, в на кривой может быть 10-15 тыс. точек, на графике 3-4 кривые, таким способом хотелось бы получить выигрыш в быстродействии. Стоит ли затевать?
1.6K
07 февраля 2008 года
Tdr
154 / / 13.11.2003
Что-то я ничего не понял...
Примерно так можно сделать:
Для каждого слоя создаешь CBitmap в памяти.
Отрисовываешь свои слои.
При перерисовке окна тебе надо только сделать BitBlt для каждого слоя на область вывода.
При изменении слоя перерисовываешь его CBitmap и все.
35K
07 февраля 2008 года
ProgrammerIzverg
6 / / 16.01.2008
Смотри API-ную функцию AlphaBlend
284
08 февраля 2008 года
michael_is_98
587 / / 25.02.2005
На кривой не может быть 10-20 тыс. точек, их может быть столько, сколько пикселей на мониторе. Если нужно увеличить скорость обработки, учтите это. Я также занимался классом для вывода простых двумерных графиков.
P.S. как вы создаете класс для вывода графика?
34K
08 февраля 2008 года
T_Volkova_81
3 / / 07.02.2008
Идут измерения, кривая хранит все точки, понятно, что при отрисовке многие из них сольются в одну. Но если произойдет увеличение масштаба (а пользователю будет нужна такая функция) - придется перересовывать.
284
08 февраля 2008 года
michael_is_98
587 / / 25.02.2005
Если многие точки сольются в одну их не нужно выводить на экран. Это и есть верный подход к решению подобной задачи и средство увеличения скорости работы в целом. Перерисовка нужна в любом случае
284
11 февраля 2008 года
michael_is_98
587 / / 25.02.2005
П.С. Если вам интересно, могу предложить исходный код программы построения графиков. Сам по нему учился. Пишите личное сообщение, если интересно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог