Návod: Přidání objektu D2D do projektu MFC
V tomto názorném postupu se naučíte, jak přidat základní objekt Direct2D (D2D) do projektu Visual C++, knihovny tříd Microsoft Foundation (MFC) a pak sestavit projekt do aplikace, která vytiskne text "Hello, World!" na pozadí přechodu.
Tento návod ukazuje, jak provádět tyto úlohy:
Vytvořte aplikaci MFC.
Vytvořte štětec s plnou barvou a lineární přechodový štětec.
Upravte přechodový štětec tak, aby se při změně velikosti okna správně změnil.
Implementujte obslužnou rutinu výkresu D2D.
Ověřte výsledky.
Poznámka
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
Požadavky
K dokončení tohoto názorného postupu musíte mít nainstalovanou sadu Visual Studio s vývojem desktopových aplikací s úlohou C++ a volitelnou komponentou MFC jazyka Visual C++ pro komponentu x86 a x64.
Vytvoření aplikace MFC
Pomocí Průvodce aplikací MFC vytvořte aplikaci MFC. Viz Návod: Použití nových ovládacích prvků prostředí MFC pro pokyny k otevření průvodce pro vaši verzi sady Visual Studio.
Do pole Název zadejte MFCD2DWalkthrough. Vyberte OK.
V Průvodci aplikací MFC zvolte Dokončit beze změny nastavení.
Vytvoření štětce s plnou barvou a lineárního přechodového štětce
V Průzkumník řešení v projektu MFCD2DWalkthrough ve složce Header Files otevřete MFCD2DWalkthroughView.h. Přidejte tento kód do
CMFCD2DWalkthroughView
třídy pro vytvoření tří datových proměnných:CD2DTextFormat* m_pTextFormat; CD2DSolidColorBrush* m_pBlackBrush; CD2DLinearGradientBrush* m_pLinearGradientBrush;
Uložte soubor a zavřete ho.
Ve složce Zdrojové soubory otevřete MFCD2DWalkthroughView.cpp. Do konstruktoru
CMFCD2DWalkthroughView
pro třídu přidejte tento kód:// Enable D2D support for this window: EnableD2DSupport(); // Initialize D2D resources: m_pBlackBrush = new CD2DSolidColorBrush( GetRenderTarget(), D2D1::ColorF(D2D1::ColorF::Black)); m_pTextFormat = new CD2DTextFormat( GetRenderTarget(), _T("Verdana"), 50); m_pTextFormat->Get()->SetTextAlignment( DWRITE_TEXT_ALIGNMENT_CENTER); m_pTextFormat->Get()->SetParagraphAlignment( DWRITE_PARAGRAPH_ALIGNMENT_CENTER); D2D1_GRADIENT_STOP gradientStops[2]; gradientStops[0].color = D2D1::ColorF(D2D1::ColorF::White); gradientStops[0].position = 0.f; gradientStops[1].color = D2D1::ColorF(D2D1::ColorF::Indigo); gradientStops[1].position = 1.f; m_pLinearGradientBrush = new CD2DLinearGradientBrush( GetRenderTarget(), gradientStops, ARRAYSIZE(gradientStops), D2D1::LinearGradientBrushProperties( D2D1::Point2F(0,0), D2D1::Point2F(0,0)));
Uložte soubor a zavřete ho.
Úprava přechodového štětce tak, aby se při změně velikosti okna správně změnila.
V nabídce Projekt zvolte Průvodce třídou.
V Průvodci třídou MFC v části Název třídy vyberte
CMFCD2DWalkthroughView
.On the Messages tab, in the Messages box, select
WM_SIZE
and then choose Add Handler. Tato akce přidá obslužnou rutinuOnSize
CMFCD2DWalkthroughView
zprávy do třídy.V poli Existující obslužné rutiny vyberte
OnSize
. Zvolte Upravit kód , aby se zobrazilaCMFCD2DWalkthroughView::OnSize
metoda. Na konec metody přidejte následující kód.m_pLinearGradientBrush->SetEndPoint(CPoint(cx, cy));
Uložte soubor a zavřete ho.
Implementace obslužné rutiny výkresu D2D
V nabídce Projekt zvolte Průvodce třídou.
V Průvodci třídou MFC v části Název třídy vyberte
CMFCD2DWalkthroughView
.Na kartě Zprávy zvolte Přidat vlastní zprávu.
V dialogovém okně Přidat vlastní zprávu do pole Vlastní zpráva systému Windows zadejte AFX_WM_DRAW2D. Do pole Název obslužné rutiny zprávy zadejte OnDraw2D. Vyberte možnost Registrovaná zpráva a pak zvolte OK. Tato akce přidá obslužnou rutinu zprávy pro AFX_WM_DRAW2D zprávu do
CMFCD2DWalkthroughView
třídy.V poli Existující obslužné rutiny vyberte
OnDraw2D
. Zvolte Upravit kód , aby se zobrazilaCMFCD2DWalkthroughView::OnDraw2D
metoda. Pro metoduCMFCD2DWalkthroughView::OnDrawD2D
použijte tento kód:afx_msg LRESULT CMFCD2DWalkthroughView::OnDraw2D( WPARAM wParam, LPARAM lParam) { CHwndRenderTarget* pRenderTarget = (CHwndRenderTarget*)lParam; ASSERT_VALID(pRenderTarget); CRect rect; GetClientRect(rect); pRenderTarget->FillRectangle(rect, m_pLinearGradientBrush); pRenderTarget->DrawText( _T("Hello, World!"), rect, m_pBlackBrush, m_pTextFormat); return TRUE; }
Uložte soubor a zavřete ho.
Ověření výsledků
Sestavte a spusťte aplikaci. Měl by mít přechodový obdélník, který se změní při změně velikosti okna. "Hello World!" by se měl zobrazit ve středu obdélníku.