开发者社区> 极简吧> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

GDI+ 如何将图片绘制成圆形的图片

简介: 大概意思就是不生成新的图片,而是将图片转换为圆形图片。 实现代码如下: private Image CutEllipse(Image img, Rectangle rec, Size size) { Bitmap bitmap = new Bitmap(size.
+关注继续查看

大概意思就是不生成新的图片,而是将图片转换为圆形图片。

这里写图片描述

实现代码如下:

private Image CutEllipse(Image img, Rectangle rec, Size size)
{
    Bitmap bitmap = new Bitmap(size.Width, size.Height);
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        using (TextureBrush br = new TextureBrush(img,System.Drawing.Drawing2D.WrapMode.Clamp, rec))
        {
            br.ScaleTransform(bitmap.Width / (float)rec.Width, bitmap.Height / (float)rec.Height);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            g.FillEllipse(br, new Rectangle(Point.Empty, size));
        }
    }
    return bitmap;
}

然后调用方法即可。

Image image = this.pictureBox1.Image;
Image newImage = CutEllipse(image, new Rectangle(0, 0, 150, 150), new Size(150, 150));
this.pictureBox2.Image = newImage;

那么用WPF如何实现?实现就更简单了,不需要写后台代码,直接利用XAML即可。

<Grid>
        <Ellipse Height="150" Width="150">
            <Ellipse.Fill>
                <ImageBrush ImageSource="Image/1_guwei4037.jpg" ></ImageBrush>
            </Ellipse.Fill>
        </Ellipse>
</Grid>

————————————————————————————————————

群里的@陈应钦对如上的方法提出一个问题,就是如上的方法图形的下边缘和右侧边缘是一条直线,并不是平滑的曲线。细心观察确实如此。

原因是我画到了picturebox控件中,本身picturebox控件border就占长度,正好又画满控件,所以右边和下边都是直线了(空间不够了)。

所以解决方案有两个:可以直接绘制到不占空间的区域(比如窗体中指定的Rectangle),或者将绘制图形的长和宽缩小一点。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot整合SpringSecurity带图片验证码简单实现
针对把code码放到httpServletRequest中易引发并发问题,考虑之后,实现把code码放入到login的提交表单内,与用户名和密码一起发送。
151 0
spring boot中如何实现在手机注册和登录时获取验证码(阿里短信服务)
为了实现在手机注册和登录时获取手机验证码,我使用了阿里的短信服务,下面就来介绍一下具体如何实现。将介绍代码层面如何使用的,去阿里开通该服务,以及如何获得你的accessKeyId和accessKeySecret等。
248 0
手淘图片库新特性解析
随着手淘拉新和用户体量的增加,CDN图片资源的访问量也随之增加。我们知道访问量增加,会带来带宽的增加,服务器成本也随之增加。
124 0
企业IT治理沙龙·北京站 || 业务优先?治理优先?您的企业是哪种上云姿势?
为了体系化解决企业在云上管理和治理的问题,今年,阿里云开放平台推出企业IT治理样板间,为企业客户提供在阿里云上搭建跨账号的复杂企业 IT 治理体系的基本骨架,可以满足企业快速、全面的进行云治理初始化的需求,使企业在云上创建任何负载之前,就能预先搭建好一个符合企业合规管控标准的安全、可信环境。
2316 0
使用使用Zopfli优化PNG图片
本文讲的是使用使用Zopfli优化PNG图片,PNG格式 在图片存储中是个很有用的格式,因为他能够保护截图的颜色不失真,能够很好地还原所有图片信息。然而,有许多图像应用并不提供导出较小 PNG 格式图片的功能。幸好,我们可以用一个 Google 发布的扩展工具 Zopfli 来解决这个问题。
1481 0
vc/mfc获取rgb图像数据后动态显示及保存图片的方法
vc/mfc获取rgb图像数据后动态显示及保存图片的方法 该情况可用于视频通信中获取的位图数据回放显示或显示摄像头捕获的本地图像 第一种方法 #include 加载 vfw32.lib  链接库 [cpp] view plaincopy   //----------...
1582 0
VC添加背景图片 的一种方法
.如果程序是新建的对话框,要给其添加背景图片的步骤: 1)加入消息函数:afx_msg void OnPaint(); 2)BEGIN_MESSAGE_MAP(QueryDlg, CDialog) ON_WM_PAINT()//add this   END_MESSAGE_MAP() 3)重写OnP...
829 0
图片盗链分析(一)
现在探讨一下网站图片防盗链 一步一步的进行。 (一) 一个网页中对同域的图片的访问 [准备]在Vs中添加一网站,添加images图片文件夹,里边放一张a1.gif的图片,一张用于显示防盗链的图片z1.
809 0
+关注
极简吧
软件架构师、微软MVP
128
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载