Jak rysować i wypełniać kształt podstawowy
W tym temacie opisano sposób rysowania kształtu podstawowego. Interfejs ID2D1RenderTarget udostępnia metody tworzenia i wypełniania elips, prostokątów i linii. W poniższych przykładach pokazano, jak utworzyć i narysować wielokropek.
Ten temat zawiera następujące sekcje:
- Rysowanie konturu elipsy z jednolitym obrysem
- Rysowanie elipsy z kreskowanym obrysem
- Rysowanie i wypełnianie elipsy
- rysowanie bardziej złożonych kształtów
- Tematy pokrewne
Rysuj kontur elipsy z jednolitym pociągnięciem
Aby narysować kontur elipsy, trzeba zdefiniować pędzel (taki jak ID2D1SolidColorBrush lub ID2D1LinearGradientBrush) do malowania konturu oraz D2D1_ELLIPSE opisujący wymiary i położenie elipsy, a następnie przekazać te obiekty do ID2D1RenderTarget::DrawEllipse. W poniższym przykładzie tworzony jest pędzel o czarnym, jednolitym kolorze i zapisywany w składowej klasy m_spBlackBrush.
hr = m_pRenderTarget->CreateSolidColorBrush(
D2D1::ColorF(D2D1::ColorF::Black),
&m_pBlackBrush
);
W następnym przykładzie zdefiniowano D2D1_ELLIPSE i użyto go za pomocą pędzla zdefiniowanego w poprzednim przykładzie w celu narysowania konturu elipsy. Ten przykład generuje dane wyjściowe pokazane na poniższej ilustracji.
D2D1_ELLIPSE ellipse = D2D1::Ellipse(
D2D1::Point2F(100.f, 100.f),
75.f,
50.f
);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f);
Narysuj elipsę z kreskowanym pociągnięciem
W poprzednim przykładzie użyto zwykłej kreski. Można zmodyfikować wygląd obrysu na kilka sposobów, tworząc ID2D1StrokeStyle. ID2D1StrokeStyle umożliwia określenie kształtu na początku i końcu pociągnięcia, w tym, czy ma wzorzec kreski, itd. Poniższy przykład tworzy ID2D1StrokeStyle opisujący pociągnięcie przerywane. W tym przykładzie użyto wstępnie zdefiniowanego wzorca kreski, D2D1_DASH_STYLE_DASH_DOT_DOT, ale można również określić własne.
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);
W następnym przykładzie użyto stylu pociągnięcia z metodą DrawEllipse. Ten przykład generuje dane wyjściowe pokazane na poniższej ilustracji.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
Rysowanie i wypełnianie elipsy
Aby pomalować wnętrze elipsy, należy użyć metody FillEllipse. W poniższym przykładzie użyto metody DrawEllipse, aby nakreślić elipsę, a następnie użyto metody FillEllipse do malowania jej wnętrza. Ten przykład generuje dane wyjściowe pokazane na poniższej ilustracji.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
Następny przykład najpierw wypełnia elipsę, a następnie rysuje jej kontur. Ten przykład generuje dane wyjściowe pokazane na poniższej ilustracji.
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
Kod został pominięty w tych przykładach.
Rysowanie bardziej złożonych kształtów
Aby narysować bardziej złożone kształty, należy zdefiniować obiekty ID2D1Geometry i używać ich z metodami DrawGeometry i FillGeometry. Aby uzyskać więcej informacji, zobacz Geometrie — omówienie.
Tematy pokrewne