图片圆角化处理
来源:互联网 发布:上古5白雪sg捏脸数据 编辑:程序博客网 时间:2024/05/02 14:57
在安卓的项目中有时候我们需要美化界面,需要使图片看起来圆润光滑,这时候就需要用到图片圆角化处理技术了,我们可以通过图像叠加的方法为图片添加圆角效果。正常情况下,在已有的图像上绘图时会在它的上面添加一层新图像。如果绘图时使用的Paint是完全不透明的,那么新图像会完全遮挡下面的图像,如果Paint是部分透明的,那么重叠部分的图像颜色将会叠加。通过PorterDuffXfermode可以设置绘制图像时的叠加方式,PorterDuffXfermode是非常强大的转化模式,使用它可以使用图像合成的16条PorterDuff规则的任意一条来控制Paint如何与已有的Canvas图像交互。下面列举常用的规则:
16条Porter-Duff规则
1.PorterDuff.Mode.CLEAR
所绘制不会提交到画布上。
2.PorterDuff.Mode.SRC
显示上层绘制图片
3.PorterDuff.Mode.DST
显示下层绘制图片
4.PorterDuff.Mode.SRC_OVER
正常绘制显示,上下层绘制叠盖。
5.PorterDuff.Mode.DST_OVER
上下层都显示。下层居上显示。
6.PorterDuff.Mode.SRC_IN
取两层绘制交集。显示上层。
7.PorterDuff.Mode.DST_IN
取两层绘制交集。显示下层。
8.PorterDuff.Mode.SRC_OUT
取上层绘制非交集部分。
9.PorterDuff.Mode.DST_OUT
取下层绘制非交集部分。
10.PorterDuff.Mode.SRC_ATOP
取下层非交集部分与上层交集部分
11.PorterDuff.Mode.DST_ATOP
取上层非交集部分与下层交集部分
12.PorterDuff.Mode.XOR
13.PorterDuff.Mode.DARKEN
14.PorterDuff.Mode.LIGHTEN
15.PorterDuff.Mode.MULTIPLY
16.PorterDuff.Mode.SCREEN
下面给出java转化代码:
public class MainActivity extends Activity { private ImageView imageview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); imageview=(ImageView)findViewById(R.id.imageview); BitmapDrawable bitmapdrawable=(BitmapDrawable) getResources().getDrawable(R.drawable.background); Bitmap bitmap=bitmapdrawable.getBitmap(); Bitmap bitmap_changed=change_bitmap(bitmap); imageview.setImageBitmap(bitmap_changed); } Bitmap change_bitmap(Bitmap bitmap) { /* * BitmapDrawable类的用处,就是将Drawable转化成Bitmap * BitmapDrawable bitmapdrawable=(BitmapDrawable) getResources().getDrawable(R.drawable.ic_launcher); Bitmap bitmap=bitmapdrawable.getBitmap(); */ //根据bitmap图片的大小创建一个位图资源 Bitmap bitmapback=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); //将创建的位图当做画板 Canvas canvas=new Canvas(bitmapback); //创建一个画笔 Paint paint=new Paint(); Rect rect=new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF rectf=new RectF(rect); float roundPx=20; paint.setAntiAlias(true); canvas.drawRoundRect(rectf, roundPx, roundPx, paint); //先在这个画板上创建一个圆角矩形 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //设置图像叠加模式,取两层图像交集部分,只显示上层图像 canvas.drawBitmap(bitmap, rect, rect, paint); //将bitmap绘制在画板上 return bitmapback; }}
图片处理的效果:
- 图片圆角化处理
- android 图片圆角化处理,支持xutil 加载网络图片
- Android图片呈现圆角化
- 控件的局部圆角化处理
- DIV如何圆角化,包括图片的DIV如何圆角化
- 如何在coreldRAW中快速将图片圆角化?
- android 把图片使用代码进行圆角化:
- android实现图片圆角化实现三种方法
- 视图圆角化 iphone
- bitmap圆角化
- 透明圆角化背景图片
- 页面弹出窗口圆角化
- CALayer 圆角化、阴影、边框
- iphone下View的圆角化
- UIView 圆角化/全屏/边框和颜色
- Android 按钮的扁平化(圆角化)
- 实现任意View的圆角化
- IOS6 7下控件的圆角化,可做圆
- hdoj 3466 Proud Merchants
- 桌面协议(1)rdesktop 24位色
- untiy3d实现简单转盘抽奖
- 配置sonar、jenkins进行持续审查
- 一段c++输入格式解析代码
- 图片圆角化处理
- 2015程序员值得收藏的十大主流button模式
- makefile---使用共享库文件so
- OCP-V13-707
- 从全部控件中找指定类型的控件
- 更新xcode7运行程序,报错*** Assertion failure in -[UIApplication _runWithMainScene:transi
- Android Sdk 快速下载,解决下载慢的问题
- WideCharToMultiByte和MultiByteToWideChar函数的用法 (转)
- Codeforces #313 (Div. 1) C. Gerald and Giant Chess dp 组合数 逆元