Как я могу визуализировать текст в WriteableBitmap в фоновом потоке в Windows Phone 7?

Я пытаюсь отобразить текст на растровом изображении в приложении Windows Phone 7.

Код, который выглядит более или менее следующим образом, будет нормально работать, когда он выполняется в основном потоке:

public ImageSource RenderText(string text, double x, double y)
{
    var canvas = new Canvas();

    var textBlock = new TextBlock { Text = text };
    canvas.Children.Add(textBloxk);
    Canvas.SetLeft(textBlock, x);
    Canvas.SetTop(textBlock, y);

    var bitmap = new WriteableBitmap(400, 400);
    bitmap.Render(canvas, null);
    bitmap.Invalidate();
    return bitmap;
}

Теперь, поскольку у меня есть для рендеринга нескольких изображений с более сложным материалом я хотел бы визуализировать растровое изображение в фоновом потоке, чтобы избежать зависания пользовательского интерфейса.

Когда я использую BackgroundWorker для этого, конструктор для TextBlock генерирует исключение UnauthorizedAccessException , утверждая, что это недопустимый межпотоковый доступ.

Мой вопрос: как я могу отобразить текст на растровом изображении, не блокируя пользовательский интерфейс?

  • Я предлагаю использовать веб-сервис для рендеринга. Мне нужно отрендерить большое количество изображений, а стоимость полосы пропускания неприемлема для моих нужд, и возможность работать в автономном режиме является основным требованием.
  • Решение не обязательно должно использовать WriteableBitmap или UIElements , если есть другой способ визуализации текста.

] РЕДАКТИРОВАТЬ

Еще одна мысль: кто-нибудь знает, можно ли запустить цикл сообщений пользовательского интерфейса в другом потоке, а затем заставить этот поток выполнять работу? (вместо использования BackgroundWorker )?

РЕДАКТИРОВАТЬ 2

Чтобы рассмотреть альтернативы WriteableBitmap , мне нужны следующие функции:

  • Нарисовать фоновое изображение.
  • ] Измерьте ширину и высоту однострочной строки с учетом семейства и размера шрифта (и желательно стиля). Нет необходимости в переносе слов.
  • Нарисуйте однострочную строку с заданным семейством шрифтов, размером, стилем и заданными координатами.
  • Визуализация текста должна поддерживать прозрачный фон. Я. е. вы должны увидеть фоновое изображение между символами.
14
задан Ran 15 April 2011 в 07:06
поделиться