分享方式:


逐步解說:將 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 應用程式

  1. 使用 MFC 應用程式精靈 建立 MFC 應用程式。 如需如何開啟 Visual Studio 版本的精靈的指示,請參閱 逐步解說:使用新的 MFC 殼層控制項

  2. 在 [ 名稱] 方塊中,輸入 MFCD2DWalkthrough 。 選擇確定

  3. 在 [MFC 應用程式精靈 ] 中 ,選擇 [完成 ] 而不變更任何設定。

建立純色筆刷和線性漸層筆刷

  1. 方案總管 中,于 MFCD2DWalkthrough 專案中的 [標頭檔] 資料夾中,開啟 MFCD2DWalkthroughView.h。 將此程式碼新增至 CMFCD2DWalkthroughView 類別,以建立三個數據變數:

    CD2DTextFormat* m_pTextFormat;
    CD2DSolidColorBrush* m_pBlackBrush;
    CD2DLinearGradientBrush* m_pLinearGradientBrush;
    

    儲存並關閉檔案。

  2. 在 [ 原始程式檔] 資料夾中,開啟 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)));
    

    儲存並關閉檔案。

若要修改漸層筆刷,使其在調整視窗大小時適當地變更

  1. 在 [專案] 功能表上,選擇 [ 類別精靈 ]。

  2. 在 [MFC 類別精靈] 的 [類別名稱 ] 底下 ,選取 CMFCD2DWalkthroughView

  3. 在 [訊息] 索引 標籤的 [訊息 ] 方塊中,選取 WM_SIZE 並選擇 [ 新增處理常式 ]。 此動作會將 OnSize 訊息處理常式新增至 CMFCD2DWalkthroughView 類別。

  4. 在 [ 現有處理常式] 方塊中 ,選取 OnSize 。 選擇 [ 編輯程式碼 ] 以顯示 CMFCD2DWalkthroughView::OnSize 方法。 在 方法的結尾,新增下列程式碼。

    m_pLinearGradientBrush->SetEndPoint(CPoint(cx, cy));
    

    儲存並關閉檔案。

實作 D2D 繪圖處理常式

  1. 在 [專案] 功能表上,選擇 [ 類別精靈 ]。

  2. 在 [MFC 類別精靈] 的 [類別名稱 ] 底下 ,選取 CMFCD2DWalkthroughView

  3. 在 [ 訊息] 索引標籤上,選擇 [ 新增自訂訊息 ]。

  4. 在 [ 新增自訂訊息] 對話方塊的 [ 自訂 Windows 訊息 ] 方塊中,輸入 AFX_WM_DRAW2D 。 在 [ 訊息處理常式名稱] 方塊中,輸入 OnDraw2D 。 選取 [ 已註冊的訊息 ] 選項,然後選擇 [ 確定 ]。 此動作會將AFX_WM_DRAW2D訊息的訊息處理常式新增至 CMFCD2DWalkthroughView 類別。

  5. 在 [ 現有處理常式] 方塊中 ,選取 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!」 應該會顯示在矩形中央。

另請參閱

逐步解說