推荐安卓开发神器(里面有各种UI特效和android代码库实例)
1.下面的Xfermode子类可以改变这种行为:
AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。
PixelXorXfermode 当覆盖已有的颜色时,应用一个简单的像素XOR操作。
PorterDuffXfermode 这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。
要应用转换模式,可以使用setXferMode方法,如下所示:
AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID); borderPen.setXfermode(avoid);
2.Porter-Duff 效果图:
3.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
相关推荐
在Android开发中,`Paint`类是用于图形绘制的核心工具,它允许开发者设置各种属性来控制绘制的效果。其中,`setXfermode()`方法是一个非常重要的功能,它涉及到图形混合模式,可以用来实现复杂的图像合成效果。这个...
方式实现,API 18 以下 使用 Paint.setXfermode(Xfermode) 方式实现 (使用的是PorterDuffXfermode),均支持动态图;支持固定高宽缩放比缩放,支持前景 Drawable,支持ImageView的所有ScaleType。 属性及方法说明 ...
此外,Android也提供了其他实现圆角图片的方式,例如使用`Shader`的`BitmapShader`类配合`Matrix`操作,或者使用`ImageView`的`android:background`属性设置一个带有圆角的`Shape` XML资源。每种方法都有其适用场景...
- `setXfermode(Xfermode mode)`:设置混合模式,用于控制新绘制的图形如何与现有图像混合,例如SRC_OVER(源覆盖)和 DST_IN(目标在)。 6. **画刷效果**: - `setShader(Shader shader)`:设置画刷的纹理或...
7. **橡皮擦功能**:通过设置`Paint`的透明度(`setAlpha()`)或者使用特定的混合模式(`setXfermode()`),可以实现橡皮擦效果。用户可以选择橡皮擦模式,清除画布上的部分内容。 8. **撤销/重做机制**:为了提高...
而Paint则是设置绘制属性的对象,如颜色、样式、抗锯齿效果等,它决定了图形的外观。 要实现圆形头像,我们通常会创建一个自定义的ImageView子类。以下是一个简单的步骤: 1. **创建自定义View**:首先,创建一个...
刮刮卡:1....涉及知识点:1.Canvas、Paint、Path、Bitmap的使用2.Paint.setXferMode的使用3.自定义属性4.Bitmap.getPixles获得所有像素点。项目地址:https://github.com/scp504677840/GuaGuaKa 效果图:
而`setXfermode`结合`PorterDuff.Mode.SRC_IN`则允许我们通过重叠区域显示水波纹效果,达到水波纹与背景圆相互融合的视觉效果。 关键在于绘制贝塞尔曲线,这是一种在二维图形中创建平滑曲线的方法。在Android中,...
- `setXfermode(Xfermode mode)`:设置混合模式,用于控制新绘制内容如何与已有内容融合。 8. **画图操作**: - 在Canvas上使用`drawRect(Rect r, Paint paint)`、`drawCircle(float cx, float cy, float radius,...
5. ** PorterDuff.Mode**:如果你需要在圆形头像上添加其他效果,如半透明层或叠加颜色,可以使用PorterDuff.Mode结合Paint的setXfermode()方法,实现不同绘图操作之间的混合。 6. **自定义属性**:为了方便在布局...
6. **绘图模式**:`setXfermode()`允许你设置绘图模式,例如 porterduff 模式,这在进行复杂图形混合时非常有用。 7. **绘图路径**:`drawPath()`方法结合Path类,可以绘制复杂的图形路径。 8. **绘图效果**:还...
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); // 使图像适应圆形区域 canvas.drawCircle(width / 2, height / 2, radius, paint); } } ``` 4. **属性设置**:为了让用户在XML布局文件中...
6. **Xfermode**: `myPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN))`设置了绘制时使用的混合模式,这里的PorterDuff.Mode.DST_IN模式会将上层图像与下层图像进行混合。 7. **其他Paint属性**...
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); bitmapCanvas.drawBitmap(getDrawable().getBitmap(), null, rect, paint); // 使用圆形画布进行绘制 canvas.drawBitmap(output, 0, 0, ...
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } ``` 在上面的代码中,我们首先检查了图片是否为正方形,如果不是,则...
Porter-Duff是一种定义图形混合规则的算法,通过`setXfermode(Xfermode)`方法可以设置PorterDuff模式。例如,`SRC_OVER`(源覆盖)是最常见的模式,新的图形会覆盖在旧图形之上;`DST_IN`(目标在内)则只保留新...
eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); ``` 当你在橡皮擦模式下处理触摸事件时,只需使用 `eraser` 而非 `paint` 来绘制: ```java @Override public boolean onTouchEvent...
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); roundCanvas.drawBitmap(bitmap, rect, rect, paint); // 使用圆形Bitmap进行绘制 canvas.drawBitmap(output, 0, 0, null); } super....
接下来,为了实现水面上涨效果,我们利用`Paint`的`setXfermode`方法,将其模式设置为`PorterDuff.Mode.SRC_IN`。这种模式允许我们在已有的图像上绘制新的图形,只保留两个图形的交集部分。在这个例子中,我们可以先...