`
407827531
  • 浏览: 1073900 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

setXfermode属性

 
阅读更多

推荐安卓开发神器(里面有各种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

分享到:
评论
1 楼 aplixy 2016-05-23  
谢谢分享,怎么没人顶,写的挺好,配图一目了然

相关推荐

    setXfermode讲解

    在Android开发中,`Paint`类是用于图形绘制的核心工具,它允许开发者设置各种属性来控制绘制的效果。其中,`setXfermode()`方法是一个非常重要的功能,它涉及到图形混合模式,可以用来实现复杂的图像合成效果。这个...

    Android代码-ShapeImageView

    方式实现,API 18 以下 使用 Paint.setXfermode(Xfermode) 方式实现 (使用的是PorterDuffXfermode),均支持动态图;支持固定高宽缩放比缩放,支持前景 Drawable,支持ImageView的所有ScaleType。 属性及方法说明 ...

    圆角图片实现

    此外,Android也提供了其他实现圆角图片的方式,例如使用`Shader`的`BitmapShader`类配合`Matrix`操作,或者使用`ImageView`的`android:background`属性设置一个带有圆角的`Shape` XML资源。每种方法都有其适用场景...

    应用源码之(Paint画笔).zip

    - `setXfermode(Xfermode mode)`:设置混合模式,用于控制新绘制的图形如何与现有图像混合,例如SRC_OVER(源覆盖)和 DST_IN(目标在)。 6. **画刷效果**: - `setShader(Shader shader)`:设置画刷的纹理或...

    android涂鸦功能

    7. **橡皮擦功能**:通过设置`Paint`的透明度(`setAlpha()`)或者使用特定的混合模式(`setXfermode()`),可以实现橡皮擦效果。用户可以选择橡皮擦模式,清除画布上的部分内容。 8. **撤销/重做机制**:为了提高...

    圆形自定义头像

    而Paint则是设置绘制属性的对象,如颜色、样式、抗锯齿效果等,它决定了图形的外观。 要实现圆形头像,我们通常会创建一个自定义的ImageView子类。以下是一个简单的步骤: 1. **创建自定义View**:首先,创建一个...

    GuaGuaKa2-刮刮卡:1.简易的一个画板2.简易的刮出背景图功能3.刮刮卡的完整版.涉及知识点:1.Canvas、Paint、Path、Bitmap的使用2.Paint.se.zip

    刮刮卡:1....涉及知识点:1.Canvas、Paint、Path、Bitmap的使用2.Paint.setXferMode的使用3.自定义属性4.Bitmap.getPixles获得所有像素点。项目地址:https://github.com/scp504677840/GuaGuaKa 效果图:

    Android自定义view实现圆形waveview

    而`setXfermode`结合`PorterDuff.Mode.SRC_IN`则允许我们通过重叠区域显示水波纹效果,达到水波纹与背景圆相互融合的视觉效果。 关键在于绘制贝塞尔曲线,这是一种在二维图形中创建平滑曲线的方法。在Android中,...

    Android应用源码之(Paint画笔).zip

    - `setXfermode(Xfermode mode)`:设置混合模式,用于控制新绘制内容如何与已有内容融合。 8. **画图操作**: - 在Canvas上使用`drawRect(Rect r, Paint paint)`、`drawCircle(float cx, float cy, float radius,...

    Android 圆形头像

    5. ** PorterDuff.Mode**:如果你需要在圆形头像上添加其他效果,如半透明层或叠加颜色,可以使用PorterDuff.Mode结合Paint的setXfermode()方法,实现不同绘图操作之间的混合。 6. **自定义属性**:为了方便在布局...

    Android Paint画笔使用Demo源码.rar

    6. **绘图模式**:`setXfermode()`允许你设置绘图模式,例如 porterduff 模式,这在进行复杂图形混合时非常有用。 7. **绘图路径**:`drawPath()`方法结合Path类,可以绘制复杂的图形路径。 8. **绘图效果**:还...

    安卓自定义ImageView实现圆形图片

    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属性**...

    圆形ImageView(圆形头像)

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); bitmapCanvas.drawBitmap(getDrawable().getBitmap(), null, rect, paint); // 使用圆形画布进行绘制 canvas.drawBitmap(output, 0, 0, ...

    android 自定义圆形imageview

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } ``` 在上面的代码中,我们首先检查了图片是否为正方形,如果不是,则...

    android之Paint

    Porter-Duff是一种定义图形混合规则的算法,通过`setXfermode(Xfermode)`方法可以设置PorterDuff模式。例如,`SRC_OVER`(源覆盖)是最常见的模式,新的图形会覆盖在旧图形之上;`DST_IN`(目标在内)则只保留新...

    安卓手绘图片处理画板相关-橡皮擦与画笔的demo.rar

    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....

    Android自定义View实现水面上涨效果

    接下来,为了实现水面上涨效果,我们利用`Paint`的`setXfermode`方法,将其模式设置为`PorterDuff.Mode.SRC_IN`。这种模式允许我们在已有的图像上绘制新的图形,只保留两个图形的交集部分。在这个例子中,我们可以先...

Global site tag (gtag.js) - Google Analytics