Как сделать в коде растровое изображение, совместимое с пользовательским интерфейсом Avalonia? - PullRequest
1 голос
/ 14 июля 2020

Я хочу sh иметь растровое изображение фона в моем приложении 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, но застрял. Что мне не хватает, пожалуйста? (Да, у меня еще нет подробностей о размере текста - сначала нужно освоить основы).

1 Ответ

0 голосов
/ 14 июля 2020

Начиная с версий 0.9 и 0.10, вы можете преобразовать IDrawingContextImpl в правильный DrawingContext, передав его конструктору.

API, скорее всего, будет изменен в 0.11, поэтому RenderTargetBitmap можно будет использовать только для рендеринга элементов управления и другой Bitmap класс может использоваться для рисования в непосредственном режиме.

...