Пошаговое руководство. Добавление объекта D2D в проект MFC

В этом пошаговом руководстве показано, как добавить базовый объект Direct2D (D2D) в проект Visual C++, библиотеку классов Microsoft Foundation (MFC), а затем создать проект в приложение, которое печатает "Hello, World!" на градиентном фоне.

В пошаговом руководстве показано, как выполнить следующие задачи:

  • Создайте приложение MFC.

  • Создайте сплошную кисть и линейную градиентную кисть.

  • Измените кисть градиента таким образом, чтобы оно меняется соответствующим образом при изменении размера окна.

  • Реализуйте обработчик документа D2D.

  • Проверьте результаты.

Примечание.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Необходимые компоненты

Чтобы выполнить это пошаговое руководство, необходимо установить Visual Studio с рабочей нагрузкой C++ и дополнительным компонентом Visual C++ MFC для x86 и x64.

Создание приложения MFC

  1. Используйте мастер приложений MFC для создания приложения MFC. См . пошаговое руководство. Использование новых элементов управления оболочки MFC для инструкций по открытию мастера для вашей версии Visual Studio.

  2. В поле "Имя" введите MFCD2DWalkthrough. Выберите OK.

  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!" должен отображаться в центре прямоугольника.

См. также

Пошаговые руководства