如何在Windows Phone 8.1 c#中做文本块文本字体显示平滑度和抗锯齿



我正在写作,在文本块上动态写入文本并另存为图像。将图像放在文本上显示不正确平滑。

我正在使用此代码:

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();
            }

在位图编码器上设置图像位图属性。

 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.
    }

最新更新