Мне нужно рисовать график — выборку значений, размер выборки m_SampleSize, диапазон значений — от m_MinValue до m_MaxValue. Физические размеры устройства равны mSampleSize x SCALE_POINTS. Ось X должна быть направлена вправо, ось Y — вверх. Кроме этого, нужно задавать красный цвет отрисовки.
Я рисую в виртуальном окне m_MemDC (экземпляр CDC), режим MM_ANISOTROPIC, настраиваю параметры рисования так:
m_MemDC->SetMapMode( MM_ANISOTROPIC );
m_MemDC->SetWindowExt( m_SampleSize, m_MinValue-m_MaxValue );
m_MemDC->SetWindowOrg( 0, m_MinValue );
m_MemDC->SetViewportExt( m_SampleSize, SCALE_POINTS );
m_MemDC->SetViewportOrg( 0, SCALE_POINTS );
CPen myPen( PS_SOLID, 1, RGB(255,0,0) );
CPen *oldPen = m_MemDC->SelectObject( &myPen );
// дальше рисую с помощью MoveTo/LineTo.
Не работает.
Во-первых, при сравнительно небольшой длине выборки почему-то правый конец графика "сползает" влево. То есть такое ощущение, что отрисовывается начало графика, потом мы сдвигаемся влево на один "логический" шаг относительно текущей точки и дорисовываем график. Например, при выборке в десять элементов четко видно, что по длине график соответствует девяти элементам, вместо последнего — пустота, при этом в одном из последних сегментов графика виден отрезок "двойной" толщины. Не знаю, может быть, это есть и на больших выборках, просто это не так заметно. Что может быть не так в моих настройках?
Во-вторых, график упорно рисуется черным цветом. Перо myPen вроде бы создается, я смотрела в отладчике. Опять же, может быть, дело в том, что я неправильно работаю с режимом MM_ANISOTROPIC?
Коллеги, пожалуйста, прокомментируйте, что может быть неправильно.
Второй вопрос немного прояснился. Оказалось, у меня в виртуальном окне отрисовка делается в монохромный битмап (схожая проблема описана
здесьАвтор: nap2k
Дата: 23.05.03
).