Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
internal static Bitmap CreateHeading(string text, ConversionOptions options)
{
if (string.IsNullOrEmpty(text))
text = "Test string";
Run run2 = new Run
{
FontFamily = new FontFamily(options.ImageHeadingFontFamily),
FontSize = options.ImageHeadingFontSizePrimary,
FontStyle = FontStyles.Normal,
Text = text,
Foreground = new SolidColorBrush(options.ImageHeadingForegroundColor),
};
if (options.ImageHeadingItalic) run2.FontStyle = FontStyles.Italic;
Run item = run2;
Paragraph paragraph2 = new Paragraph {TextAlignment = TextAlignment.Left};
Paragraph paragraph = paragraph2;
paragraph.Inlines.Add(item);
var document = new FlowDocument();
document.Blocks.Add(paragraph);
document.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
document.PageHeight = 100.0;
document.PageWidth = document.ColumnWidth = 2400.0;
DocumentPaginator documentPaginator = ((IDocumentPaginatorSource)document).DocumentPaginator;
documentPaginator.PageSize = new Size(documentPaginator.PageSize.Width * 3.0, 100.0);
var visual = new ContainerVisual {Transform = new ScaleTransform(3.0, 1.0)};
visual.Children.Add(documentPaginator.GetPage(0).Visual);
var source = new RenderTargetBitmap(0x960, 100, 72.0, 72.0, PixelFormats.Pbgra32);
source.Render(visual);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(source));
Bitmap bitmap2;
using (var stream = new MemoryStream())
{
encoder.Save(stream);
bitmap2 = new Bitmap(stream);
}
using (var bitmap3 = FastCoalesce(bitmap2))
using (var bitmap4 = new Bitmap(bitmap3.Width / 3, bitmap3.Height))
{
FastFold(bitmap3, bitmap4);
bitmap2.Dispose();
return Crop(bitmap4);
}
}








Про растеризацию исходного кода