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 unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung 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. Eine Anleitung zum Öffnen des Assistenten für Ihre Version von Visual Studio finden Sie unter Walkthrough: Verwenden der neuen MFC-Shell-Steuerelemente.

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

  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 im 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. "Hello World!" sollte in der Mitte des Rechtecks angezeigt werden.

Siehe auch

Exemplarische Vorgehensweisen