Win2D是一个易于使用的Windows运行时API,用于通过GPU加速进行即时模式2D图形渲染。C#,C ++和VB开发人员可以为Windows通用平台(UWP)编写应用程序。它利用Direct2D的功能,并与XAML和CoreWindow无缝集成。
创建您的项目:
将项目的“架构”选项设置为x86或 x64,而不是设置为Any CPU。Win2D是用C ++实现的,因此使用Win2D的项目需要针对特定的CPU体系结构。
添加Win2D NuGet软件包:
将CanvasControl添加到您的XAML页面:
xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
<Grid>
<canvas:CanvasControl Draw="CanvasControl_Draw" ClearColor="CornflowerBlue"/>
</Grid>
然后添加一些Win2D绘图代码。
private void CanvasControl_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
args.DrawingSession.DrawEllipse(155, 115, 80, 30, Colors.Black, 3);
args.DrawingSession.DrawText("Hello world!", 100, 100, Colors.Yellow);
}
Xaml文件中添加 Unloaded 事件
<Page
x:Class="GanttChartApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:GanttChartApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:canvas= "using:Microsoft.Graphics.Canvas.UI.Xaml"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
Unloaded="Page_Unloaded">
<Grid>
<canvas:CanvasControl x:Name="canvasControl" Draw="canvasControl_Draw" CreateResources="canvasControl_CreateResources" />
</Grid>
</Page>
private void Page_Unloaded(object sender, RoutedEventArgs e)
{//释放资源
canvasControl.RemoveFromVisualTree();
canvasControl = null;
}