如何使用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/


猜你喜欢

转载自blog.csdn.net/xjb2006/article/details/76327073