一直在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/