Win2D „Hello, World!“ – Schnellstart
In diesem Thema erstellen Sie ein sehr einfaches Projekt „Hello, World!“ für Win2D.
Erstellen Sie in Visual Studio ein neues Projekt aus einer der folgenden Projektvorlagen:
- WinUI 3 (Windows App SDK). Verwenden Sie zum Erstellen eines neuen WinUI 3-Projekts die Projektvorlage Leere App, verpackt (WinUI 3 in Desktop). Sie können diese Projektvorlage finden, indem Sie eine Sprache auswählen: entweder C# oder C++; Plattform: Windows; Projekttyp: Desktop.
- Universelle Windows-Plattform (UWP). Verwenden Sie zum Erstellen eines neuen UWP-Projekts die Projektvorlage Leere App (Universelle Windows-App) oder Leere App (C++/WinRT) oder Leere App (Universelle Windows - C++/CX). Wählen Sie für die Sprache entweder C# oder C++; Plattform: Windows; Projekttyp: UWP.
Wichtig
Informationen zum Einrichten des Projekts für die Verwendung von Win2D finden Sie unter Referenz zum Win2D-NuGet-Paket.
Zum Hosten von Win2D-Inhalten müssen Sie dem MainWindow.xaml
(oder MainPage.xaml
für ein UWP-Projekt) Ihres Projekt ein Win2D CanvasControl hinzufügen.
Fügen Sie zunächst die folgende XML-Namespacedeklaration hinzu:
xmlns:win2dcanvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
Und fügen Sie dann ein CanvasControl hinzu, dem dieser XML-Namespace vorangestellt ist. Sie können z. B. ein Raster als Layoutstamm hinzufügen, z. B. wie folgt:
<Grid>
<win2dcanvas:CanvasControl Draw="CanvasControl_Draw" ClearColor="CornflowerBlue"/>
</Grid>
Das Projekt wird derzeit nicht kompiliert, da auf den referenzierten, aber nicht implementierten Draw-Ereignishandler verwiesen wird. Daher beheben wir dies als Nächstes, während wir einen Zeichnungscode für die Interaktion mit CanvasControl hinzufügen.
Für ein WinUI 3 (Windows App SDK)-Projekt
Fügen Sie für ein C#-Projekt den folgenden Ereignishandler zu MainWindow.xaml.cs
hinzu;
// MainWindow.xaml.cs
...
public sealed partial class MainWindow : Window
{
...
void CanvasControl_Draw(
Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender,
Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
args.DrawingSession.DrawEllipse(155, 115, 80, 30, Microsoft.UI.Colors.Black, 3);
args.DrawingSession.DrawText("Hello, Win2D World!", 100, 100, Microsoft.UI.Colors.Yellow);
}
}
...
Fügen Sie für ein C++/WinRT-Projekt den folgenden Ereignishandler zu MainWindow.xaml.h
und MainWindow.xaml.cpp
hinzu:
// MainWindow.xaml.h
...
void CanvasControl_Draw(
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl const& sender,
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs const& args);
...
// MainWindow.xaml.cpp
...
namespace winrt::MYPROJECT::implementation
{
...
void MainWindow::CanvasControl_Draw(
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl const& sender,
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs const& args)
{
args.DrawingSession().DrawEllipse(155, 115, 80, 30, winrt::Microsoft::UI::Colors::Black(), 3);
args.DrawingSession().DrawText(L"Hello, Win2D World!", 100, 100, winrt::Microsoft::UI::Colors::Yellow());
}
}
Jetzt kannst du das Projekt kompilieren und ausführen. Sie sehen einige Win2D-Inhalte – eine schwarze Ellipse mit einer gelben Nachricht: „Hello, World!“ davor.
Hinzufügen eines UWP-Projekts
Für ein C#-Projekt können Sie den gleichen C#-Code wie für ein WinUI 3-Projekt verwenden (siehe den Abschnitt Für ein WinUI 3-Projekt oben). Die einzigen Unterschiede sind, dass Sie MainPage.xaml.cs
anstelle von MainWindow.xaml.cs
bearbeiten. Und Sie müssen Microsoft.UI.Colors
zu Windows.UI.Colors
ändern.
Fügen Sie für ein C++/WinRT-Projekt den folgenden Code zu pch.h
, MainPage.h
und MainPage.cpp
hinzu:
// pch.h
...
#include <winrt/Microsoft.Graphics.Canvas.UI.Xaml.h>
// MainPage.h
...
void CanvasControl_Draw(
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl const& sender,
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs const& args);
...
// MainPage.cpp
...
namespace winrt::MYPROJECT::implementation
{
...
void MainPage::CanvasControl_Draw(
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl const& sender,
winrt::Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs const& args)
{
args.DrawingSession().DrawEllipse(155, 115, 80, 30, winrt::Windows::UI::Colors::Black(), 3);
args.DrawingSession().DrawText(L"Hello, Win2D World!", 100, 100, winrt::Windows::UI::Colors::Yellow());
}
}
Fügen Sie für ein C++/CX-Projekt den folgenden Ereignishandler zu MainPage.xaml.h
und MainPage.xaml.cpp
hinzu:
// MainPage.xaml.h
...
void CanvasControl_Draw(
Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl^ sender,
Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs^ args);
...
// MainWindow.xaml.cpp
...
void MainPage::CanvasControl_Draw(
Microsoft::Graphics::Canvas::UI::Xaml::CanvasControl^ sender,
Microsoft::Graphics::Canvas::UI::Xaml::CanvasDrawEventArgs^ args)
{
args->DrawingSession->DrawEllipse(155, 115, 80, 30, Windows::UI::Colors::Black, 3);
args->DrawingSession->DrawText("Hello, Win2D World!", 100, 100, Windows::UI::Colors::Yellow);
}
Weitere Informationen
Windows developer
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für