Freigeben über


Exemplarische Vorgehensweise: Hinzufügen eines D2D-Objekts zu einem MFC-Projekt

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie einem Visual C++-, Microsoft Foundation Class Library (MFC)-Projekt ein einfaches Direct2D-Objekt (D2D) hinzufügen und dann das Projekt in eine Anwendung erstellen, die "Hello, World!" auf einem Farbverlaufshintergrund druckt.

Die exemplarische Vorgehensweise zeigt, wie Sie diese Aufgaben ausführen:

  • Erstellen Sie eine MFC-Anwendung.

  • Erstellen Sie einen Pinsel mit Volltonfarbe und einen linearen Farbverlaufpinsel.

  • Ändern Sie den Farbverlaufpinsel so, dass er sich entsprechend ändert, wenn die Größe des Fensters geändert wird.

  • Implementieren sie einen D2D-Zeichnungshandler.

  • Überprüfen Sie die Ergebnisse.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Voraussetzungen

Um diese exemplarische Vorgehensweise abzuschließen, müssen Sie Visual Studio mit der Desktopentwicklung mit C++ -Workload und der optionalen Visual C++-MFC für x86- und x64-Komponente installiert haben.

So erstellen Sie eine MFC-Anwendung

  1. Verwenden Sie den MFC-Anwendungs-Assistenten , um eine MFC-Anwendung zu erstellen. Siehe Exemplarische Vorgehensweise: Verwenden der neuen MFC-Shellsteuerelemente für Anweisungen zum Öffnen des Assistenten für Ihre Version von Visual Studio.

  2. Geben Sie im Feld "Name " den Namen "MFCD2DWalkthrough" ein. Wählen Sie OK aus.

  3. Wählen Sie im MFC-Anwendungs-Assistenten "Fertig stellen" aus, ohne die Einstellungen zu ändern.

So erstellen Sie einen Pinsel mit Volltonfarbe und einen linearen Farbverlaufpinsel

  1. Öffnen Sie in Projektmappen-Explorer im Projekt MFCD2DWalkthrough im Ordner "Headerdateien" MFCD2DWalkthroughView.h. Fügen Sie der CMFCD2DWalkthroughView Klasse diesen Code hinzu, um drei Datenvariablen zu erstellen:

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

    Speichern Sie die Datei, und schließen Sie sie.

  2. Öffnen Sie im Ordner "Quelldateien " MFCD2DWalkthroughView.cpp. Fügen Sie im Konstruktor für die CMFCD2DWalkthroughView Klasse diesen Code hinzu:

    // 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)));
    

    Speichern Sie die Datei, und schließen Sie sie.

So ändern Sie den Farbverlaufpinsel so, dass er sich entsprechend ändert, wenn die Größe des Fensters geändert wird

  1. Wählen Sie im Menü "Projekt" die Option "Kurs-Assistent" aus.

  2. Wählen Sie im MFC-Klassen-Assistenten unter Dem Klassennamen die Option CMFCD2DWalkthroughViewaus.

  3. Wählen Sie auf der Registerkarte "Nachrichten" im Feld "Nachrichten" die Option WM_SIZE "Handler hinzufügen" aus. Diese Aktion fügt der Klasse den OnSize Nachrichtenhandler hinzu CMFCD2DWalkthroughView .

  4. Wählen Sie im Feld "Vorhandene Handler" die Option OnSizeaus. Wählen Sie "Code bearbeiten" aus, um die CMFCD2DWalkthroughView::OnSize Methode anzuzeigen. Fügen Sie am Ende der Methode den folgenden Code hinzu.

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

    Speichern Sie die Datei, und schließen Sie sie.

So implementieren Sie einen D2D-Zeichnungshandler

  1. Wählen Sie im Menü "Projekt" die Option "Kurs-Assistent" aus.

  2. Wählen Sie im MFC-Klassen-Assistenten unter Dem Klassennamen die Option CMFCD2DWalkthroughViewaus.

  3. Wählen Sie auf der Registerkarte "Nachrichten " die Option "Benutzerdefinierte Nachricht hinzufügen" aus.

  4. Geben Sie im Dialogfeld "Benutzerdefinierte Nachricht hinzufügen" im Feld "Benutzerdefinierte Windows-Nachricht" AFX_WM_DRAW2D ein. Geben Sie im Feld "Name des Nachrichtenhandlers" "OnDraw2D" ein. Wählen Sie die Option "Registrierte Nachricht" und dann "OK" aus. Diese Aktion fügt der Klasse einen Nachrichtenhandler für die AFX_WM_DRAW2D Nachricht hinzu CMFCD2DWalkthroughView .

  5. Wählen Sie im Feld "Vorhandene Handler" die Option OnDraw2Daus. Wählen Sie "Code bearbeiten" aus, um die CMFCD2DWalkthroughView::OnDraw2D Methode anzuzeigen. Verwenden Sie diesen Code für die CMFCD2DWalkthroughView::OnDrawD2D Methode:

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

    Speichern Sie die Datei, und schließen Sie sie.

So überprüfen Sie die Ergebnisse

Erstellen Sie die Anwendung und führen Sie sie aus. Es sollte ein Farbverlaufsrechteck aufweisen, das sich ändert, wenn Sie die Größe des Fensters ändern. "Hallo Welt!" sollte in der Mitte des Rechtecks angezeigt werden.

Siehe auch

Exemplarische Vorgehensweisen