逐步解說:將 D2D 物件加入至 MFC 專案
本逐步解說會教導如何將基本的 Direct2D (D2D) 物件新增至 Visual C++、Microsoft Foundation Class Library (MFC) 專案,然後將專案建置成在漸層背景上列印 「Hello, World!」 的應用程式。
本逐步解說示範如何完成這些工作:
建立 MFC 應用程式。
建立純色筆刷和線性漸層筆刷。
修改漸層筆刷,以便在調整視窗大小時適當地變更。
實作 D2D 繪圖處理常式。
確認結果。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化。
必要條件
若要完成本逐步解說,您必須使用使用 C++ 的桌面開發工作負載和適用于 x86 和 x64 元件的選擇性 Visual C++ MFC 來安裝 Visual Studio。
建立 MFC 應用程式
使用 MFC 應用程式精靈 建立 MFC 應用程式。 如需如何開啟 Visual Studio 版本的精靈的指示,請參閱 逐步解說:使用新的 MFC 殼層控制項 。
在 [ 名稱] 方塊中,輸入 MFCD2DWalkthrough 。 選擇確定。
在 [MFC 應用程式精靈 ] 中 ,選擇 [完成 ] 而不變更任何設定。
建立純色筆刷和線性漸層筆刷
在 方案總管 中,于 MFCD2DWalkthrough 專案中的 [標頭檔] 資料夾中,開啟 MFCD2DWalkthroughView.h。 將此程式碼新增至
CMFCD2DWalkthroughView
類別,以建立三個數據變數:CD2DTextFormat* m_pTextFormat; CD2DSolidColorBrush* m_pBlackBrush; CD2DLinearGradientBrush* m_pLinearGradientBrush;
儲存並關閉檔案。
在 [ 原始程式檔] 資料夾中,開啟 MFCD2DWalkthroughView.cpp。 在 類別的建構函式中
CMFCD2DWalkthroughView
,新增下列程式碼:// 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)));
儲存並關閉檔案。
若要修改漸層筆刷,使其在調整視窗大小時適當地變更
在 [專案] 功能表上,選擇 [ 類別精靈 ]。
在 [MFC 類別精靈] 的 [類別名稱 ] 底下 ,選取
CMFCD2DWalkthroughView
。在 [訊息] 索引 標籤的 [訊息 ] 方塊中,選取
WM_SIZE
並選擇 [ 新增處理常式 ]。 此動作會將OnSize
訊息處理常式新增至CMFCD2DWalkthroughView
類別。在 [ 現有處理常式] 方塊中 ,選取
OnSize
。 選擇 [ 編輯程式碼 ] 以顯示CMFCD2DWalkthroughView::OnSize
方法。 在 方法的結尾,新增下列程式碼。m_pLinearGradientBrush->SetEndPoint(CPoint(cx, cy));
儲存並關閉檔案。
實作 D2D 繪圖處理常式
在 [專案] 功能表上,選擇 [ 類別精靈 ]。
在 [MFC 類別精靈] 的 [類別名稱 ] 底下 ,選取
CMFCD2DWalkthroughView
。在 [ 訊息] 索引標籤上,選擇 [ 新增自訂訊息 ]。
在 [ 新增自訂訊息] 對話方塊的 [ 自訂 Windows 訊息 ] 方塊中,輸入 AFX_WM_DRAW2D 。 在 [ 訊息處理常式名稱] 方塊中,輸入 OnDraw2D 。 選取 [ 已註冊的訊息 ] 選項,然後選擇 [ 確定 ]。 此動作會將AFX_WM_DRAW2D訊息的訊息處理常式新增至
CMFCD2DWalkthroughView
類別。在 [ 現有處理常式] 方塊中 ,選取
OnDraw2D
。 選擇 [ 編輯程式碼 ] 以顯示CMFCD2DWalkthroughView::OnDraw2D
方法。 針對 方法使用此程式碼CMFCD2DWalkthroughView::OnDrawD2D
: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; }
儲存並關閉檔案。
確認結果
建置並執行應用程式。 它應該有一個漸層矩形,當您調整視窗大小時會變更。 「Hello World!」 應該會顯示在矩形中央。