C# 图像质量模糊
我想将一些XAML转换成一个图像,所以我创建了一个RichTextBox,然后拍摄了它的图像。现在的问题是图像中的文字模糊了,你们知道我该如何修复它吗C# 图像质量模糊,c#,wpf,C#,Wpf,我想将一些XAML转换成一个图像,所以我创建了一个RichTextBox,然后拍摄了它的图像。现在的问题是图像中的文字模糊了,你们知道我该如何修复它吗 public System.Drawing.Bitmap ConvertXamltoImage(string XamlString, int Width, int Height) { RichTextBox AdContentRichTextBox = new RichTextBox() { Width = Width, Height
public System.Drawing.Bitmap ConvertXamltoImage(string XamlString, int Width, int Height)
{
RichTextBox AdContentRichTextBox = new RichTextBox() { Width = Width, Height = Height };
AdContentRichTextBox.BorderThickness = new Thickness(0);
XmlReader _XmlReader = XmlReader.Create(new StringReader(XamlString));
AdContentRichTextBox.Document = XamlString;
var size = new Size(Width, Height);
AdContentRichTextBox.Measure(size);
AdContentRichTextBox.Arrange(new Rect(size));
RenderTargetBitmap bmp = new RenderTargetBitmap(Width, Height, 300, 300, PixelFormats.Pbgra32);
bmp.Render(AdContentRichTextBox);
DrawingVisual _drawingVisual = new DrawingVisual();
using (DrawingContext _drwaingContext = _drawingVisual.RenderOpen())
{
VisualBrush _visualBrush = new VisualBrush(AdContentRichTextBox);
}
PngBitmapEncoder _png = new PngBitmapEncoder();
_png.Frames.Add(BitmapFrame.Create(bmp));
System.Drawing.Bitmap _tempBitmap = null;
using (Stream _fileStream = new MemoryStream())
{
_png.Save(_fileStream);
_tempBitmap = new System.Drawing.Bitmap(_fileStream);
_fileStream.Flush();
}
return _tempBitmap;
}
嗯……这里可能有很多东西相互作用: 第一 灰度回退-如果ClearType被禁用,或者在某些无法运行ClearType算法的情况下正在渲染文本,WPF将使用灰度渲染算法对渲染文本进行反别名 将文本渲染到RenderTargetBitmap似乎是其中一种情况……(渲染器从硬件路径切换到软件路径) 第二 此外,NET4将默认的缩放算法从高质量(Fant)切换到低质量(双线性)…现在这不应该在这里起作用,因为它看起来不像是以任何方式缩放位图…但您永远不知道内部发生了什么。可以将定标器切换回更高质量的定标器
关于如何解决这一问题的一些想法如下:
见相关链接:
关于如何解决这一问题的一些想法如下:
见相关链接: