我想在RenderTargetBitmap上绘制文本。
此代码可在WinForms中使用:
e.Graphics.TextRenderingHint =
TextRenderingHint.SingleBitPerPixelGridFit;
e.Graphics.DrawString("Without Smoothing",
the_font, Brushes.Blue, x, y);
y += 25;
TextRenderingHint的WPF替代方法是什么?
现在我用以下代码绘制:
public BitmapSource KarakterMintakRajzolasa(int CelMagassag)
{
Typeface typeface = new Typeface("Times New Roman");
FormattedText formatted_text = null;
for (double betuMeret = 8; betuMeret < 24; betuMeret += 0.1)
{
// betűtípus és formázott szöveg létrehozás
formatted_text = new FormattedText(KarakterLista, CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, typeface, betuMeret, Brushes.Black);
formatted_text.TextAlignment = TextAlignment.Center;
if (formatted_text.Height == CelMagassag)
break;
}
// szélesség magasság számolása
double width = formatted_text.Width - formatted_text.OverhangLeading;
double height = formatted_text.Height;
// DrawingVisual létrehozása és rárajzolás
DrawingVisual drawing_visual = new DrawingVisual();
DrawingContext drawing_context = drawing_visual.RenderOpen();
drawing_context.DrawRectangle(Brushes.White, null, new Rect(0, 0, width, height)); //fehér háttér
drawing_context.DrawText(formatted_text, new Point(width / 2, 0));
drawing_context.Close();
// az eredmény bitmap-ra rajzolása
RenderTargetBitmap bm = new RenderTargetBitmap((int)width, (int)height, 96, 96, PixelFormats.Pbgra32);
bm.Render(drawing_visual);
bm.Freeze();
return bm;
}