コード例 #1
0
        private static BitmapSource RenderTxt(Stream input, IImageLoadingV1 parameters)
        {
            var len = input.Length;

            if (input.Length > MaxLength)
            {
                len = MaxLength;
            }
            byte[] buf = new byte[len];
            input.Read(buf, 0, buf.Length);
            string allText = Encoding.UTF8.GetString(buf);

            foreach (var v in InvalidStrings)
            {
                if (allText.Contains(v))
                {
                    // Binary data - skip.
                    return(null);
                }
            }

            allText = allText.Replace(EndLineChars, " ");
            // `! +REPLACEME=[\d.]+?|Black
            var txt = new FormattedText(allText, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface(RenderFontName), 10.0, Brushes.Black);

            return(WriteTextToImage(txt, new Point(0, 0), parameters));
        }
コード例 #2
0
        public static BitmapSource WriteTextToImage(FormattedText text, Point position, IImageLoadingV1 parameters)
        {
            var wid = parameters.Width;

            if (wid == 0 || double.IsNaN(wid))
            {
                wid = DefaultSize;
            }

            var hei = parameters.Height;

            if (hei == 0 || double.IsNaN(hei))
            {
                hei = DefaultSize;
            }

            var visual = new DrawingVisual();
            var prop   = hei / wid;

            hei = (int)(wid * prop);

            text.MaxTextWidth = wid;
            using (var dc = visual.RenderOpen())
            {
                dc.DrawRectangle(Brushes.White, null, new Rect(new Size(wid, hei)));
                dc.DrawText(text, position);
            }

            var target = new RenderTargetBitmap((int)wid, (int)hei, 96.0, 96.0, PixelFormats.Default);

            target.Render(visual);

            parameters.Format = TxtFormatName;

            return(target);
        }