avaloniaui - 如何在代码中制作与 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.Media.FormattedText'转换为'Avalonia.Platform.IFormattedTextImpl'”这一事实之外,这很好。我已经围绕它进行了试验,试图找出这与 Avalonia 代码之间的不同之处,但被卡住了。请问我错过了什么?(是的,我还没有完成文本大小的细节 - 需要先让基础工作)。
解决方案
从 0.9 和 0.10 版本开始,您可以通过将其传递给构造函数来转换IDrawingContextImpl
为正确的。DrawingContext
API 很可能在 0.11 中发生更改,因此 RenderTargetBitmap 将仅可用于呈现控件,并且可以将不同的Bitmap
类用于即时模式绘图。
推荐阅读
- html - Bootstrap 4 制作相同的按钮
- java - Java 8 LocalDateTime 在解析具有 00 秒的日期字符串值时丢弃 00 秒值,例如“2018-07-06 00:00:00”
- python - Python - 基于100万行表上日期差异的向量化条件变量总和
- php - SQL数据库中的自定义问题,想知道如何让用户回答每个问题
- tensorflow - 无法从 Tensorflow 导入分发模块(Dockerized)
- c# - 使用 WAY2SMS 发送 SMS 消息的异常
- java - 使用 Java 为 Hangouts Chat API 设置传入 webhook?
- c - 函数'getline'的隐式声明甚至认为它是
- python - 什么是更快,scipy fsolve vs root?
- android - NFC 标签 - 控制标签扫描时间的方法