我正在尝试将Telerik地图转换为Image。
Telerik有一个用于视图中创建的地图的ExportToImage方法。
但是在这种情况下,我动态地创建一个地图,而不是在视图中。
当我使用PrintVisual时,我能很好地看到地图,
但是当我使用各种方法将FrameworkElement转换成图像时,
包括Telerik的ExportToImage,我只得到了地图中各层的图片。
private void LocationsToImage(ICollection<LocationType> locationCollection, Size size)
{
var map = new RadMap
{
Language = XmlLanguage.GetLanguage(CultureInfo.DefaultThreadCurrentCulture.Name),
Width = size.Width,
Height = size.Height
};
var layer = new InformationLayer();
map.Items.Add(layer);
MapHelper.DrawLocations(map, layer, locationCollection);
//print
map.Arrange(new Rect(size));
map.Measure(size);
map.Provider = MapProviderFactory.Create();
var path = @"C:\Test.png";
SaveToPng(map, path);
}
void SaveToPng(FrameworkElement visual, string fileName)
{
var encoder = new PngBitmapEncoder();
SaveUsingEncoder(visual, fileName, encoder);
}
void SaveUsingEncoder(FrameworkElement visual, string fileName, BitmapEncoder encoder)
{
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)visual.ActualWidth, (int)visual.ActualHeight, 96, 96, PixelFormats.Pbgra32);
bitmap.Render(visual);
BitmapFrame frame = BitmapFrame.Create(bitmap);
encoder.Frames.Add(frame);
using (var stream = File.Create(fileName))
{
encoder.Save(stream);
}
}我得到的结果是:
而不是普通的地图,像这样:
会感谢你的帮助
发布于 2022-08-01 14:22:53
您可能需要等待映射加载,尝试执行以下操作:
map.Provider = MapProviderFactory.Create();
await Task.Run(async () => await Task.Delay(TimeSpan.FromSeconds(1)));然后保存到图像
https://stackoverflow.com/questions/73191788
复制相似问题