Рисование и заливка базовой фигуры
В этом разделе описывается, как нарисовать базовую фигуру. Интерфейс ID2D1RenderTarget предоставляет методы для построения и заполнения многоточий, прямоугольников и линий. В следующих примерах показано, как создать и нарисовать многоточие.
В этом разделе содержатся следующие разделы:
- Нарисуйте контур эллипса сплошной линией
- Нарисовать эллипс с пунктирной обводкой
- рисование и заполнение эллипсов
- рисование более сложных фигур
- связанные темы
Рисование контура эллипса с твердым росчерком
Чтобы нарисовать контур эллипса, вы определяете кисть (например, ID2D1SolidColorBrush или ID2D1LinearGradientBrush) для рисования контура и D2D1_ELLIPSE для описания положения и размеров эллипса, а затем передаёте эти объекты в метод ID2D1RenderTarget::DrawEllipse. В следующем примере создается сплошная кисть черного цвета и сохраняется в члене класса m_spBlackBrush.
hr = m_pRenderTarget->CreateSolidColorBrush(
D2D1::ColorF(D2D1::ColorF::Black),
&m_pBlackBrush
);
Следующий пример определяет D2D1_ELLIPSE и использует его с кистью, определенной в предыдущем примере, для рисования контура эллипса. В этом примере получаются результаты, показанные на следующем рисунке.
D2D1_ELLIPSE ellipse = D2D1::Ellipse(
D2D1::Point2F(100.f, 100.f),
75.f,
50.f
);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f);
Рисование эллипса с пунктирным штрихом
В предыдущем примере используется обычный росчерк. Вы можете изменить внешний вид штриха несколькими способами, создав ID2D1StrokeStyle. ID2D1StrokeStyle позволяет задавать форму в начале и конце штриха, использовать пунктир и так далее. В следующем примере создается ID2D1StrokeStyle, описывающий пунктирный штрих. В этом примере используется стандартный шаблон дефиса, D2D1_DASH_STYLE_DASH_DOT_DOT, но можно также указать собственный.
D2D1_STROKE_STYLE_PROPERTIES strokeStyleProperties = D2D1::StrokeStyleProperties(
D2D1_CAP_STYLE_FLAT, // The start cap.
D2D1_CAP_STYLE_FLAT, // The end cap.
D2D1_CAP_STYLE_TRIANGLE, // The dash cap.
D2D1_LINE_JOIN_MITER, // The line join.
10.0f, // The miter limit.
D2D1_DASH_STYLE_DASH_DOT_DOT, // The dash style.
0.0f // The dash offset.
);
hr = m_pDirect2dFactory->CreateStrokeStyle(strokeStyleProperties, NULL, 0, &m_pStrokeStyle);
В следующем примере используется стиль штриха с методом DrawEllipse. В этом примере результирующий выход показан на следующем рисунке.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
Нарисовать и залить эллипс
Чтобы закрасить внутренность эллипса, используйте метод FillEllipse. В следующем примере используется метод DrawEllipse для обведения эллипса, а затем метод FillEllipse для закрашивания его внутренней части. В этом примере выходные данные показаны на следующем рисунке.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
В следующем примере сначала заполняется эллипс, а затем рисуется его контур. В этом примере создается результат, показанный на следующем рисунке.
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
Код был опущен из этих примеров.
Рисование более сложных фигур
Чтобы нарисовать более сложные фигуры, необходимо определить объекты ID2D1Geometry и использовать их с методами DrawGeometry и FillGeometry. Дополнительные сведения см. в обзоре геометрий .
Связанные разделы