コード例 #1
0
        MemBitmap CreateHalfSize(MemBitmap orgBmp)
        {
            //TODO: ...
            //
            //1. create a new one
            MemBitmap smallBmp = new MemBitmap(orgBmp.Width / 2, orgBmp.Height / 2);

            using (AggPainterPool.Borrow(smallBmp, out var painter))
            {
                painter.DrawImage(orgBmp, AffinePlan.Scale(0.5, 0.5));
            }
            return(smallBmp);
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: zwcloud/Typography
        MemBitmap ParseAndRenderSvg(System.Text.StringBuilder svgContent)
        {
            //----------
            //copy from HtmlRenderer's SvgViewer demo
            //----------
            var          docBuilder   = new VgDocBuilder();
            var          parser       = new SvgParser(docBuilder);
            TextSnapshot textSnapshot = new TextSnapshot(svgContent.ToString());

            parser.ParseDocument(textSnapshot);

            VgVisualDocBuilder builder   = new VgVisualDocBuilder();
            VgVisualElement    vgVisElem = builder.CreateVgVisualDoc(docBuilder.ResultDocument, _vgDocHost).VgRootElem;
            RectD bounds        = vgVisElem.GetRectBounds();
            float actualXOffset = (float)-bounds.Left;
            float actualYOffset = (float)-bounds.Bottom;

            int bmpW = (int)Math.Round(bounds.Width);
            int bmpH = (int)Math.Round(bounds.Height);

            if (bmpW == 0 || bmpH == 0)
            {
                return(null);
            }
            MemBitmap memBitmap = new MemBitmap(bmpW, bmpH);

            using (AggPainterPool.Borrow(memBitmap, out AggPainter p))
                using (VgPaintArgsPool.Borrow(p, out VgPaintArgs paintArgs))
                {
                    float orgX = p.OriginX;
                    float orgY = p.OriginY;
                    p.SetOrigin(actualXOffset, actualYOffset);

                    p.Clear(PixelFarm.Drawing.Color.White);

                    p.FillColor = PixelFarm.Drawing.Color.Black;

                    double prevStrokeW = p.StrokeWidth;

                    vgVisElem.Paint(paintArgs);

                    p.StrokeWidth = prevStrokeW; //restore

                    p.SetOrigin(orgX, orgY);     //restore
                }

            return(memBitmap);
        }
コード例 #3
0
        public void Paste()
        {
            //paste img from clipboard
            if (System.Windows.Forms.Clipboard.ContainsImage())
            {
                //convert clipboard img to
                System.Drawing.Bitmap bmp    = System.Windows.Forms.Clipboard.GetImage() as System.Drawing.Bitmap;
                MemBitmap             memBmp = new MemBitmap(bmp.Width, bmp.Height);
                PixelFarm.CpuBlit.Imaging.BitmapHelper.CopyFromGdiPlusBitmapSameSizeTo32BitsBuffer(bmp, memBmp);

                //...
                using (AggPainterPool.Borrow(_lionPng, out var painter))
                {
                    painter.DrawImage(memBmp);
                }
            }
        }
コード例 #4
0
 public void Cut()
 {
     //1.copy
     using (MemBitmap memBitmap = _lionPng.CopyImgBuffer(20, 20, 100, 100))
     {
         using (var platformBmp = CreatePlatformBitmap(memBitmap))
         {
             System.Windows.Forms.Clipboard.SetImage(platformBmp);
         }
     }
     //2. fill cut area
     using (AggPainterPool.Borrow(_lionPng, out var painter))
     {
         var prevColor = painter.FillColor;
         painter.FillColor = Color.White;
         painter.FillRect(20.5, 20.5, 100, 100);
         painter.FillColor = prevColor;
     }
 }
コード例 #5
0
        void RunSampleA(PixelFarm.Drawing.Painter p)
        {
            //1. create simple vertical line to test agg's lcd rendernig technique
            //create gray-scale actual image
            using (MemBitmap glyphBmp = new MemBitmap(100, 100))
            {
                int x = 10, y = 10;
                using (AggPainterPool.Borrow(glyphBmp, out var painter))
                {
                    painter.StrokeColor = PixelFarm.Drawing.Color.Black;
                    painter.StrokeWidth = 2.0f * 3;
                    painter.DrawLine(x * 3, 0, y * 3, 20); //scale horizontal 3 times, s
                }


                //painter.Line(x * 3, 0, y * 3, 20); //scale horizontal 3 times,
                //painter.Line(2, 0, 2, 15);
                //painter.Line(2, 0, 20, 20);
                //painter.Line(2, 0, 30, 15);
                //painter.Line(2, 0, 30, 5);
                //clear surface bg
                p.Clear(PixelFarm.Drawing.Color.White);
                //draw img into that bg
                //---------------
                //convert glyphImg from RGBA to grey Scale buffer
                //---------------
                //lcd process ...
                byte[] glyphGreyScale         = CreateGreyScaleBuffer(glyphBmp);
                //---------------

                //swap gray scale
                int    newGreyImgStride;
                byte[] expanedGreyScaleBuffer = CreateNewExpandedLcdGrayScale(glyphGreyScale, glyphBmp.Width, glyphBmp.Height, out newGreyImgStride);

                //blend lcd
                var aggPainer                 = (PixelFarm.CpuBlit.AggPainter)p;
                Blend(aggPainer.RenderSurface.DestBitmap, expanedGreyScaleBuffer, newGreyImgStride, glyphBmp.Height);
                //---------------
                p.DrawImage(glyphBmp, 0, 50);
            }
        }