技术思绪摘录旅行
大二的时候,遇到这个问题,当时一位老师给我的一个思路,那会儿基本上不知道啥意思,现在看来优化了一下,发布出来,将来可能还能用到。

开源是程序员的基本美德

            Image imgPhoto = Image.FromFile(@"big.jpg");
            int Width = imgPhoto.Width;
            int Height = imgPhoto.Height;//以上三句代码是为了获取图片长和宽
            int si = 0;//声明裁剪尺寸由于是需要正方形  所以只需要一个变量
            if (Width > Height)//下面判断长和宽哪个值小就用哪个值 因为要裁剪一个正方形
            {
                si = Height;
            }
            else
            {
                si = Width;
            }
            Rectangle theRectangle = new Rectangle(new Point(0, 0), new Size(si, si));//裁剪位置  后面是裁剪尺寸
            Bitmap bmp = new Bitmap(imgPhoto);//转换到可操作的内存中
            Bitmap cloneBitmap = bmp.Clone(theRectangle, PixelFormat.DontCare);
            // 计算圆形区域
            for (int y = 0; y < si; y++)
            {
                for (int x = 0; x < si; x++)
                {
                    if ((x - si / 2) * (x - si / 2) + (y - si / 2) * (y - si / 2) > (si / 2) * (si / 2))
                    {
                        //符合以上条件的为圆以外的区域
                        // 将这些区域设为指定颜色
                        cloneBitmap.SetPixel(x, y, Color.FromArgb(0, 32, 152, 213));//后面三个参数是rgb颜色   三个0表示黑色
                    }
                }
            }
            // 绑定到图片显示控件
            cloneBitmap.Save("Big1.jpg",ImageFormat.Jpeg);

效果如下:

Big1.jpg

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫