我正在写,在文本块上动态写文本并保存为图像。将图像放在文本上没有正确显示平滑度。
我使用此代码:
xaml :<Grid x:Name="gridCanvasPanel" Grid.Row="1" Margin="0,12" Tap="CanvasPanel_Tap">
<Canvas x:Name="CanvasPanel" Height="400" VerticalAlignment="Top" Background="Green">
<RichTextBox Width="450" Canvas.Left="10" Canvas.Top="20">
<Paragraph>
<Run FontSize="25" Foreground="White">Now we're e-mailing and tweeting and texting so much, a phone call comes as a fresh surprise. I get text messages on my cell phone all day long, and it warbles to alert me that someone has sent me a message on Facebook or a reply or direct message on Twitter, but it rarely ever rings.</Run>
<LineBreak/>
<Run FontSize="20" Foreground="YellowGreen">Susan Orlean</Run>
</Paragraph>
</RichTextBox>
</Canvas>
</Grid>
C#代码:
var bmp = new RenderTargetBitmap();
await bmp.RenderAsync(this.CanvasPanel);
// Setting.
bitmap = bmp as RenderTargetBitmap;
StorageFile file = null;
file = obj;
using (var stream = await file.OpenStreamForWriteAsync())
{
// Initialization.
var pixelBuffer = await bitmap.GetPixelsAsync();
var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
// convert stream to IRandomAccessStream
var randomAccessStream = stream.AsRandomAccessStream();
// encoding to PNG
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, randomAccessStream);
// Finish saving
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)bitmap.PixelWidth,
(uint)bitmap.PixelHeight, logicalDpi, logicalDpi, pixelBuffer.ToArray());
// Flush encoder.
await encoder.FlushAsync();
}
答案 0 :(得分:0)
在位图编码器上设置图像BitmapProperty。
IAsyncOperation<BitmapEncoder> CreateEncoderWithEncodingOptionsAsync(Windows.Storage.Streams.IRandomAccessStream stream)
{
var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
var qualityValue = new Windows.Graphics.Imaging.BitmapTypedValue(
1.0, // Maximum quality
Windows.Foundation.PropertyType.Single
);
propertySet.Add("ImageQuality", qualityValue);
return Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(
Windows.Graphics.Imaging.BitmapEncoder.JpegEncoderId,
stream,
propertySet
);
// Encoder is initialized with encoding options.
}