Как удалить черную область из обрезки полигонов с помощью graphics.DrawImage в C # - PullRequest
0 голосов
/ 11 июля 2019
 GraphicsPath gp = new GraphicsPath();   // a Graphicspath
                gp.AddPolygon(points.ToArray());        // with one Polygon
                RectangleF rectangle = gp.GetBounds();//selected rectangle
                byte[] imageByte = Convert.FromBase64String(ImageString);//image bytes
                Bitmap result = new Bitmap(1600, 1200, PixelFormat.Format32bppPArgb);//Graphics image to draw

                using (MemoryStream mStream = new MemoryStream())
                {
                    mStream.Write(imageByte, 0, Convert.ToInt32(imageByte.Length));//main image 

                    using (Bitmap bmp = new Bitmap(mStream, false))
                    {
                        using (Graphics graphics = Graphics.FromImage(result))
                        {
                            graphics.Clip = new System.Drawing.Region(gp);//setclip GraphicsPath
                            graphics.DrawImage(bmp,0,0);//draw image

                            Bitmap cropBmp = result.Clone(rectangle, PixelFormat.Format16bppArgb1555);//clone selcted image to small size
                            cropBmp.Save("C:\\QualityTest\\switchIcon.jpg", ImageFormat.Jpeg);//save image
                            //GetImageStringFromBitmap(cropBmp);
                            gp.Dispose();
                            return cropBmp;
                        }
                    }
                }

после обрезки полигонов, добавление к новому растровому изображению (cropBmp) с размером прямоугольника, но дополнительная область отображается черным цветом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...