如何使用GDI+制作圆形图片(类似QQ头像)

一直在CSDN学习,下载了很多资源,没有上传过什么资料,今天也为大家做个小小贡献

很多软件和APP都用了圆形图像,也想当的好看,最近公司项目要用到这个小东西,花了半天时间搞了出来。

(c#只用了几分钟就做出来了,下面贴C#算法)

http://www.cnblogs.com/wjshan0808/p/5909174.html参考的这个兄弟的算法

 private void Form1_Load(object sender, EventArgs e)
        {
            string file =System.IO.Path.Combine(Environment.CurrentDirectory, @"11.jpg");
            try
            {
                Image i = new Bitmap(file);
                pbO.Image = i;

                pbD1.Image = WayOne(file);
                pbD2.Image = WayTwo(file);

                pbS1.Image = WaySOne(file);
                pbS2.Image = WaySTwo(file);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private Bitmap WayOne(string file)
        {
            using (Image i = new Bitmap(file))
            {
                Bitmap b = new Bitmap(i.Width, i.Height);
                using (Graphics g = Graphics.FromImage(b))
                {
                    g.FillEllipse(new TextureBrush(i), 0, 0, i.Width, i.Height);
                }
                return b;
            }
        }


好的,C#成功了,效果图:

C#挺简单的,是吧。
下面主要是贴C++的代码,我们知道,C#也是用的GDI+做的,那么C++肯定也能用啦。
我们做的事情是移植到C++
中间遇到过一些困难,比如new Bitmap之类的等等
直接贴代码吧
bool CRoundStatic::LoadFile(CString szDile)
{
	CString file=szDile;
	//方法一
	Image image(file);
	Bitmap b(image.GetWidth(),image.GetHeight());
	Graphics g(&b);
	g.FillEllipse(&TextureBrush(&image), 0, 0, image.GetWidth(), image.GetHeight());
	return true;
}
是不是很简单啦,为什么用了半天,是因为GDI+的头文件没有加到项目中,看不到.后的方法,不太方便。
最后效果

 
项目下载地址:(其实上传了资源到CSDN的,无奈半天不出来,先用腾讯微云地址凑合下,下次再重新编辑)
https://share.weiyun.com/510d309f9f7e7505b18e8b41345bc8e6
好了,CSDN链接出来了,不需要积分
http://download.csdn.net/download/xjb2006/9914789

最后打个广告,8年前开发的《零度屏幕录像软件》最新发布了V11.0,欢迎大家下载看看,顺便提点意见
http://zxcvbnm555666.blog.163.com/blog/static/8027484201762744113771/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周星星的星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值