다음을 통해 공유


연습: MFC 프로젝트에 D2D 개체 추가

이 연습에서는 기본 D2D(Direct2D) 개체를 Visual C++, MFC(Microsoft Foundation Class Library) 프로젝트에 추가한 다음 그라데이션 배경에서 "Hello, World!"를 인쇄하는 애플리케이션으로 프로젝트를 빌드하는 방법을 설명합니다.

연습에서는 다음 작업을 수행하는 방법을 보여 줍니다.

  • MFC 애플리케이션을 만듭니다.

  • 단색 브러시와 선형 그라데이션 브러시를 만듭니다.

  • 창 크기가 조정될 때 적절하게 변경되도록 그라데이션 브러시를 수정합니다.

  • D2D 그리기 처리기를 구현합니다.

  • 결과를 확인합니다.

참고 항목

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

필수 조건

이 연습을 완료하려면 C++ 워크로드를 사용하는 데스크톱 개발과 x86 및 x64 구성 요소에 대한 선택적 Visual C++ MFC를 사용하여 Visual Studio를 설치해야 합니다.

MFC 애플리케이션을 만들려면

  1. MFC 애플리케이션 마법사사용하여 MFC 애플리케이션을 만듭니다. 연습: 새 MFC 셸 컨트롤을 사용하여 Visual Studio 버전에 대한 마법사를 여는 방법에 대한 지침을 참조하세요.

  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 선택합니다. 이 작업은 메시지 처리기를 클래스에 추가합니다 OnSizeCMFCD2DWalkthroughView .

  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;
    }
    

    파일을 저장하고 닫습니다.

결과를 확인하려면

애플리케이션을 빌드 및 실행합니다. 창의 크기를 조정할 때 변경되는 그라데이션 사각형이 있어야 합니다. 사각형의 가운데에는 "헬로 월드!" 이 표시됩니다.

참고 항목

연습