Чтобы избежать вопроса XY, сначала Y: Есть ли способ создать текст на SpriteVisual, который не требует Win2D?
Теперь X: проблема, которую я пытаюсь решить, состоит в том, чтоМне нужен текст в SpriteVisual (вместо TextBlock), чтобы применить к нему анимацию 3D-выражений с перспективным поворотом.Текст на SpriteVisual можно сделать с помощью Win2D.Вот пример примера кода Microsoft :
using (var ds = CanvasComposition.CreateDrawingSession(_drawingSurface))
{
ds.Clear(Colors.Transparent);
var rect = new Rect(new Point(2, 2), (_drawingSurface.Size.ToVector2() - new Vector2(4, 4)).ToSize());
ds.FillRoundedRectangle(rect, 15, 15, Colors.LightBlue);
ds.DrawRoundedRectangle(rect, 15, 15, Colors.Gray, 2);
ds.DrawText("This is a composition drawing surface", rect, Colors.Black, new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 32,
WordWrapping = CanvasWordWrapping.WholeWord,
VerticalAlignment = CanvasVerticalAlignment.Center,
HorizontalAlignment = CanvasHorizontalAlignment.Center
}
);
_drawingBrush.Surface = _drawingSurface;
_drawingVisual = _compositor.CreateSpriteVisual();
_drawingVisual.Brush = _drawingBrush;
Чтобы раскрасить текст, требуется Win2D ICanvasBrush.Но я хочу анимировать цвет в Expression Animation, поэтому мне нужно, чтобы цвет текста пришел из CompositionBrush.Теперь я могу создать CompositionMaskBrush с текстовой кистью в качестве маски и CompositionBrush в качестве источника.Но с CompositionMaskBrush я не могу добавить к ней дополнительную маску или любые другие эффекты композиции, что проблематично для меня.
Есть ли альтернативный подход или, возможно, расширение API композиции в инсайдерской сборке, которое я 'я не знаком с?