C# 如何在WinRT中为位图图像绘制字符串

C# 如何在WinRT中为位图图像绘制字符串,c#,image,windows-runtime,winrt-xaml,winjs,C#,Image,Windows Runtime,Winrt Xaml,Winjs,如何在winRT中为图像绘制字符串?在WinForms中,可以在system.drawing命名空间中使用drawstring()方法来完成,但我在WinRT API中找不到它的等价物。您不能-不幸的是,没有这样的API:-(Direct2D是WinRT中GDI的替代品。因此,您必须使用C++/CX和DirectX来绘制文本 var renderTargetBitmap = new RenderTargetBitmap(); await renderTargetBitmap.RenderAsyn

如何在
winRT
中为图像绘制字符串?在WinForms中,可以在
system.drawing
命名空间中使用
drawstring()
方法来完成,但我在WinRT API中找不到它的等价物。

您不能-不幸的是,没有这样的API:-(

Direct2D是WinRT中GDI的替代品。因此,您必须使用C++/CX和DirectX来绘制文本

var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(uiElement, width, height));
var buffer = await renderTargetBitmap.GetPixelsAsync();
var tmpWbm = new WriteableBitmap(renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight);

我没有任何例子给你,但也许(包括链接)可以帮助您。

您必须使用DirectX。您可以在C#中使用。

谷歌搜索“Metro CSharp使用Direct2D和DirectWrite进行图形”。这是他们的代码示例之一。这不是我见过的最简洁的示例,但它确实有效。使用SharpDX做同样的事情会更干净。

在Windows 8.1中,他们使用最后支持将XAML控件渲染为位图

var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(uiElement, width, height));
var buffer = await renderTargetBitmap.GetPixelsAsync();
var tmpWbm = new WriteableBitmap(renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight);

我知道,但是现在很不幸,这是不可能的。但是至少有一个WinRT的解决方案,一般来说,使用DICT2D。所以现在我们不能用C++来绘制一些文本!微软做得好!如果你解释了你发现的也不错。