如何在代码中制作与Avalonia UI兼容的位图



我希望在我的Avalonia应用程序中有一个背景位图。显示它很容易,但在代码中制作它却很困难。

为了显示,我在主窗口中有xaml:

<Window.Background>
<ImageBrush Source="{Binding BackgroundImage}"/>
</Window.Background>

我可以使用将位图加载到视图模型中

Bitmap loader = new Bitmap( @"C:image.BMP");
_backgroundImage = loader;

所以,现在我想做的就是把文本"A2〃;(例如(使用代码生成位图。

我做了很多实验和观察样本,最接近的是:

var brush = new SolidColorBrush(Colors.Blue);
var text = new FormattedText();
text.Text = "A2";
var bitmap = new RenderTargetBitmap(new PixelSize(width, height));
using (IDrawingContextImpl ctx = bitmap.CreateDrawingContext(null))
{
ctx.DrawText(brush, new Point(0, 0), text); // last param error
}
_backgroundImage = bitmap;

除了文本变量";无法从"Avalonia"转换。媒体格式化文本"to"Avalonia。站台IFormattedTextImpl";。我围绕它进行了实验,试图找出它和Avalonia代码之间的区别,但被卡住了。请问我缺少什么?(是的,我还没有完成文本大小的细节——需要先做好基础工作(。

从版本0.9和0.10开始,您可以通过将IDrawingContextImpl传递给构造函数来将其转换为正确的DrawingContext

API很可能在0.11中更改,因此RenderTargetBitmap将仅用于渲染控件,而不同的Bitmap类可用于即时模式绘制。

最新更新