`

图片设置圆角、圆形、投影

阅读更多
/**图片转换成圆形 */
	public Bitmap toRoundBitmap(Bitmap bitmap) {
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		float roundPx;
		float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
		if (width <= height) {
			roundPx = width / 2;

			left = 0;
			top = 0;
			right = width;
			bottom = width;

			height = width;

			dst_left = 0;
			dst_top = 0;
			dst_right = width;
			dst_bottom = width;
		} else {
			roundPx = height / 2;

			float clip = (width - height) / 2;

			left = clip;
			right = width - clip;
			top = 0;
			bottom = height;
			width = height;

			dst_left = 0;
			dst_top = 0;
			dst_right = height;
			dst_bottom = height;
		}

		Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
		Canvas canvas = new Canvas(output);

		final Paint paint = new Paint();
		final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
		final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
		final RectF rectF = new RectF(dst);

		paint.setAntiAlias(true);// 设置画笔无锯齿

		canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas

		// 以下有两种方法画圆,drawRounRect和drawCircle
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。
		// canvas.drawCircle(roundPx, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452
		canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle

		return output;
	}
	
	/**图片转换成圆角*/
	public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {  
	    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
	        bitmap.getHeight(), Config.ARGB_8888);  
	    Canvas canvas = new Canvas(output);  
	  
	  
	    final int color = 0xff424242;  
	    final Paint paint = new Paint();  
	    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());  
	    final RectF rectF = new RectF(rect);  
	    final float roundPx = 50;  /** 这里设置圆角度数 */
	  
	  
	    paint.setAntiAlias(true);  
	    canvas.drawARGB(0, 0, 0, 0);  
	    paint.setColor(color);  
	    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
	  
	  
	    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
	    canvas.drawBitmap(bitmap, rect, rect, paint);  
	  
	  
	    return output;  
	   
	}  
	
	/**图片设置倒影*/
	public static Bitmap createReflectedImage(Bitmap originalBitmap) {  
        // 图片与倒影间隔距离  
        final int reflectionGap = 4;  
          
        // 图片的宽度  
        int width = originalBitmap.getWidth();  
        // 图片的高度  
        int height = originalBitmap.getHeight();  
          
        Matrix matrix = new Matrix();  
        // 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转  
        matrix.preScale(1, -1);  
        // 创建反转后的图片Bitmap对象,图片高是原图的一半。  
        Bitmap reflectionBitmap = Bitmap.createBitmap(originalBitmap, 0,  
                height / 2, width, height / 2, matrix, false);  
        // 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。  
        Bitmap withReflectionBitmap = Bitmap.createBitmap(width, (height  
                + height / 2 + reflectionGap), Config.ARGB_8888);  
  
        // 构造函数传入Bitmap对象,为了在图片上画图  
        Canvas canvas = new Canvas(withReflectionBitmap);  
        // 画原始图片  
        canvas.drawBitmap(originalBitmap, 0, 0, null);  
  
        // 画间隔矩形  
        Paint defaultPaint = new Paint();  
        canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);  
  
        // 画倒影图片  
        canvas.drawBitmap(reflectionBitmap, 0, height + reflectionGap, null);  
  
        // 实现倒影效果  
        Paint paint = new Paint();  
        LinearGradient shader = new LinearGradient(0, originalBitmap.getHeight(),   
                0, withReflectionBitmap.getHeight(), 0x70ffffff, 0x00ffffff,  
                TileMode.MIRROR);  
        paint.setShader(shader);  
        paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  
        // 覆盖效果  
        canvas.drawRect(0, height, width, withReflectionBitmap.getHeight(), paint);  
  
        return withReflectionBitmap;  
    }  

 

分享到:
评论

相关推荐

    兼容各浏览器的pop,带圆角和阴影

    圆角是通过`border-radius`属性实现的,它可以设置元素边框的四个角变为圆形或椭圆形。在早期的浏览器中,例如IE8及以下版本并不支持这个属性,因此需要使用一些 hack 方法或者图片来模拟圆角效果。但现在,大部分...

    彩色立体方块艺术PPT模板.rar

    幻灯片模板带有动态效果,模板使用灰色作为PPT背景色,PPT模板封面使用了带有投影效果的,立体效果的圆角方块作为PowerPoint背景图片,空间感强,艺术气息浓厚;PPT模板内容包括与之风格搭配的PPT目录,以及并列组合...

    ps教程:教你快速制作播放器界面.doc

    4. **图层样式**:对圆角矩形添加图层样式,包括投影、内阴影、斜面和浮雕、光泽等,以增加立体感和细节。 5. **复制图层和形状操作**:复制圆角矩形图层,移除图层样式后,通过添加矩形并改变形状路径操作来创建...

    Shaper:Android Shaper,圆角图片so easy!百叶窗so easy!you has any effect you wanted!

    在Android开发中,有时我们需要为应用的UI添加一些独特的视觉效果,比如圆角图片、百叶窗动画等。Shaper库就是专为实现这类效果而设计的,它可以帮助开发者轻松地创建自定义视图显示。本文将深入探讨Shaper库在...

    PS图形图像图片设计平面广告制作 Photoshop制作玻璃图标按钮.docx

    首先,我们需要新建一个文档,并使用圆角矩形工具绘制一个圆角正方形。按下Alt键可以精确地从中心开始绘制。接着,使用渐变工具填充两种颜色,通常是一深一浅,来创建基础的背景效果。将此图层命名为"icon-bg",以...

    按钮的制作PPT教案学习.pptx

    在绘制时,按住Shift键确保绘制出的是正方形或圆形的圆角矩形。 3. **转换选区**:绘制完成后,使用Ctrl+Enter将矢量形状转换为选区,以便进行填充或应用其他操作。 4. **图层样式**:为了给按钮添加立体感和视觉...

    CSS3精通学习教程

    2. **圆角效果**:通过`border-radius`属性,可以轻松实现元素的圆角效果,无需再依赖背景图片。 3. **块阴影与文字阴影**:可以为任意的div元素和文字添加投影效果,提升视觉体验。 4. **色彩**:CSS3支持更多的...

    移动软件UI设计-3期(KC018) 3.1-任务单.doc

    此实训旨在让学生掌握如何利用Photoshop有效地制作圆形、圆角矩形、多边形和星形等基本图形,并进一步将这些图形组合成简单的UI图标。 在实训过程中,首先需要准备一台计算机,确保有良好的因特网环境,以及安装了...

    PhotoshopCS实例解析

    2. **绘制基础形状**:使用圆角矩形工具绘制出基础形状,设置合适的圆角半径。 3. **创建层次感**:通过复制基础形状的选区,缩小并填充不同颜色,创建出层次感。 4. **添加阴影**:利用高斯模糊和图层混合模式创建...

    ArcGIS缓冲区分析教程(带数据)

    确保你的数据已经正确地投影到适合分析的坐标系。 1. **创建缓冲区** - 在ArcMap的"ArcToolbox"中找到"分析工具" &gt; "缓冲区"。 - 选择你需要进行缓冲区分析的图层,例如:污染源点、道路线或城市区域面。 - 在...

    cad命令大全.pdf

    * C:圆命令,用于绘制圆形状 * CO:复制命令,用于复制对象 * CH/MO:修改特性命令,用于修改对象特性 * CHA:倒角命令,用于倒角对象 * COL:设置颜色命令,用于设置对象颜色 * D:圆环命令,用于绘制圆环形状 * DI:测量...

    solidworks200

    4.2.3 圆形角圆角 153 4.2.4 逆转圆角 154 4.2.5 变半径圆角 156 4.2.6 混合面圆角 157 4.3 孔特征 160 4.3.1 简单直孔 160 4.3.2 异型孔 162 4.3.3 在基准面上生成孔 174 4.3.4 孔系列 175 4.4 抽壳特征 ...

    PS广告牌参考.pdf

    接着,创建一个新的图层,设置前景色为#8EB622,然后使用圆角矩形工具,设置半径为30,绘制出第一个图形,这是广告牌的基本框架。 接下来,创建另一图层,选择椭圆选框工具,拉出一个大圆形并填充颜色#D5DF1E,这将...

    PROE试题、pro、Proe

    6. 倒圆角:在题图4和题图6中提到的R36和R角,是倒圆角特征,用于平滑零件边缘,提高工件表面质量,同时减少制造应力集中。 7. 壳厚:题图4要求创建厚度为10的壳特征,这在ProE中是通过减薄实体来实现的,常用于...

    CSS3绘制各种图形图标样式特效.zip

    例如,一个简单的圆形图标可以通过设置所有边框半径为元素宽度的一半来实现。 其次,利用CSS3的渐变(gradient)功能,可以创建出复杂的背景效果。线性渐变(linear-gradient)和径向渐变(radial-gradient)可以...

    MASTERCAM内部资料

    - **视角设置**:屏幕左下角的坐标轴指示当前视角设置。 - **绘图单位**:屏幕下方显示当前使用的绘图单位(mm或inch)。 #### 三、CAD零件造型命令 - **绘图(Create)**:用于创建点、直线、圆弧、倒圆角、样条曲线...

    纯CSS3 UI制作搜索框样式代码.zip

    1. **边框圆角** (border-radius):CSS3引入了边框圆角属性,允许我们无需图片就能创建圆形或椭圆形的边框。在搜索框的设计中,这可以用来使输入框看起来更加友好和现代。 2. **渐变背景** (linear-gradient):通过...

    用proe绘制精美的饮料瓶.pdf

    3. **绘制圆形**:在选定的草绘平面上绘制一个圆形,作为饮料瓶的基础形状,可以根据设计需求调整圆的大小。 4. **使用曲面工具**:利用“曲面”工具来构建饮料瓶的复杂外形,这可能包括使用“拉伸”、“旋转”等...

    机械制图项目八零件图.pptx

    4. 箱体类零件图:主视图按工作位置绘制,通常需要多个视图,并保持直接的投影关系,局部视图或局部断面图用于补充未表达清楚的部分。 此外,项目还涉及到零件图中常见的工艺结构认知,例如: 1. 机械加工工艺结构...

    CAD机械设计赛项多选题样题.docx

    可能投影为圆形的回转体 - **圆柱**:底面或顶面投影为圆。 - **圆锥**:底面投影为圆。 - **圆台**:底面或顶面投影为圆。 - **圆环**:侧面投影为圆。 - **球**:任何方向投影均为圆。 #### 6. 看装配图的目的 -...

Global site tag (gtag.js) - Google Analytics