Я пытаюсь создать растровое изображение с границы WPF. Все это сидит в приложении asp.net (конечно, на стороне сервера), работающем с .net 4.0.Создание растрового изображения WPF UIElement в ASP.NET
Проблема в том, что сгенерированное изображение, ну, пусто. У кого-нибудь есть идея, почему?
Вот код.
public static byte[] Draw(int width, int height)
{
MemoryStream memoryStream
= new MemoryStream();
Thread t = new Thread(delegate()
{
System.Windows.Controls.Border border = new System.Windows.Controls.Border()
{
Background = Brushes.Red,
BorderBrush = Brushes.Green,
CornerRadius = new System.Windows.CornerRadius(5),
Width = width,
Height = height
};
border.ApplyTemplate();
RenderTargetBitmap renderTargetBitmap =
new RenderTargetBitmap(width, height, 90, 90, PixelFormats.Pbgra32);
renderTargetBitmap.Render(border);
BitmapEncoder bitmapEncoder =
new PngBitmapEncoder();
bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
bitmapEncoder.Save(memoryStream);
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
bool success = t.Join(5000);
if (success)
return memoryStream.ToArray();
else
throw new Exception("Fail");
}
Результат довольно плохо, как я сказал, что возвращает изображение с правой шириной и высотой, но она пуста, так что я предполагаю, что я не запутались вещь с битом распараллеливания.
хороший, спасибо товарищу! –