Android画圆角矩形图片,并在图片上写字
2013-11-29 10:10
369 查看
参考博文:
参考了上面的博文,制定的实现思路如下:
1、创建一个drawable对象,一个输出的Bitmap并以此创建一个画布
//根据源文件新建一个darwable对象
Drawable imageDrawable = getResources().getDrawable(id);
// 新建一个新的输出图片
Bitmap output = Bitmap.createBitmap(169, 169, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
2、创建圆角矩形
// 新建一个矩形
RectF outerRect = new RectF(0, 0, 169, 169);
// 产生一个红色的圆角矩形 或者任何有色颜色,不能是透明!
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
canvas.drawRoundRect(outerRect, 10, 10, paint);
3、在矩形上画图形
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
imageDrawable.setBounds(0, 0, 169, 169);
imageDrawable.draw(canvas);
4、写字
paint.setTextSize(24);
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.CENTER);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
canvas.drawText(s , 85 , 159 , paint);
这样,就完成了想要的效果。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201311/c5fa404b99411c36a27f905988ee3b3f)
这是调用了9次,每一次用不同的背景图。
总结,在上面的实现过程中,使用了两次 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
不过(PorterDuff.Mode.SRC_ATOP)并不相同。而实现的关键正在此处!
先看不同的Mode值是代表了什么样的效果。但在此之前,需明确两个变量:dst,src(dst是画布原有的图形,src是新画上去的图形)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201311/57610a727be525684698bea9081f9143)
因此这就是我的实现逻辑:
先画圆角矩形,这时圆角矩形是dst,然后画图形,图形是src,使用Mode是srcIn,这样就形成了圆角矩形;
接下来,圆角矩形图形是dst,然后画文字,文字是src,使用Mode是srcATop,这样就形成了在圆角图形上写字的效果。
2011.10.10——— android 画图之setXfermode
刚做一个应用,UI设计的效果是需要在Android中用已有的图片画出一个矩形图形,并且要在图形上写不同的字样。参考了上面的博文,制定的实现思路如下:
1、创建一个drawable对象,一个输出的Bitmap并以此创建一个画布
//根据源文件新建一个darwable对象
Drawable imageDrawable = getResources().getDrawable(id);
// 新建一个新的输出图片
Bitmap output = Bitmap.createBitmap(169, 169, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
2、创建圆角矩形
// 新建一个矩形
RectF outerRect = new RectF(0, 0, 169, 169);
// 产生一个红色的圆角矩形 或者任何有色颜色,不能是透明!
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
canvas.drawRoundRect(outerRect, 10, 10, paint);
3、在矩形上画图形
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
imageDrawable.setBounds(0, 0, 169, 169);
imageDrawable.draw(canvas);
4、写字
paint.setTextSize(24);
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.CENTER);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
canvas.drawText(s , 85 , 159 , paint);
这样,就完成了想要的效果。
这是调用了9次,每一次用不同的背景图。
总结,在上面的实现过程中,使用了两次 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
不过(PorterDuff.Mode.SRC_ATOP)并不相同。而实现的关键正在此处!
先看不同的Mode值是代表了什么样的效果。但在此之前,需明确两个变量:dst,src(dst是画布原有的图形,src是新画上去的图形)。
因此这就是我的实现逻辑:
先画圆角矩形,这时圆角矩形是dst,然后画图形,图形是src,使用Mode是srcIn,这样就形成了圆角矩形;
接下来,圆角矩形图形是dst,然后画文字,文字是src,使用Mode是srcATop,这样就形成了在圆角图形上写字的效果。
相关文章推荐
- Android中绘制圆角矩形图片及任意形状图片
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
- Android中绘制圆角矩形图片及任意形状图片
- android圆角矩形图片的实现进而讨论view自定义的要点
- Android开发之自定义圆角矩形图片ImageView的实现
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
- Android长方形图片生成正圆形,以及矩形图片生成圆角
- Android自定义圆角矩形图片ImageView
- 在Android中绘制圆角矩形图片
- Android实现自定义ImageView的圆角矩形图片效果
- Android长方形图片生成正圆形,以及矩形图片生成圆角
- Android如何将一张图片裁成圆形/圆角矩形/特殊形状
- Android之libgdx裁剪图片成圆角矩形
- Android 自定义 RoundImageView 实现圆角矩形或圆形图片
- Android开发之自定义圆角矩形图片ImageView
- Android 绘制圆角图片(圆形图片,圆角矩形图片,圆角正方形图片)【转】
- 在Android中绘制圆角矩形图片
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控旋转,圆角矩形,圆形和仿刮刮卡效果
- Android长方形图片生成正圆形,以及矩形图片生成圆角
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示