ComposeShader混合渲染
2012-08-15 09:16
169 查看
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ComposeShader; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ShapeDrawable; import android.view.View; /** * @version 2012-8-14 上午10:45:28 **/ public class ComposeGameView extends View implements Runnable { Bitmap mBitmap = null; int bitwidth = 0; int bitheight = 0; Paint mPaint = null; // bitmap渲染 Shader mBitmapShader = null; // 线性渐变渲染 Shader mLinearGradient = null; // 混合渲染 Shader mComposeShader = null; ShapeDrawable mShapeDrawable = null; public ComposeGameView(Context context) { super(context); // 装载资源 mBitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.abc)) .getBitmap(); // 得到宽高 bitwidth = mBitmap.getWidth(); bitheight = mBitmap.getHeight(); // 创建BitmapShader对象 mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR); // 创建LinearGradient并设置渐变颜色数组 mLinearGradient = new LinearGradient(0, 0, 0, 100, new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.WHITE }, null, Shader.TileMode.MIRROR); // 混合渲染 将两个效果叠加 mComposeShader = new ComposeShader(mBitmapShader, mLinearGradient, PorterDuff.Mode.LIGHTEN); mPaint = new Paint(); new Thread(this).start(); } @Override protected void onDraw(Canvas canvas) { // 绘制混合渲染效果 mPaint.setShader(mComposeShader); canvas.drawRect(0, 0, bitwidth + 300, bitheight + 300, mPaint); } @Override public void run() { while(!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch(Exception e) { Thread.currentThread().interrupt(); } postInvalidate(); } } }PorterDuff.Mode
相关文章推荐
- Android 自定义View修炼-Android实现圆形、圆角和椭圆自定义图片View(使用BitmapShader图形渲染方法)
- android Shader 渲染
- [UnityShader]渲染队列、ZWrite和ZTest
- 【合并Shader】合并渲染状态
- Unity Shader入门精要笔记(一):渲染流水线
- Android学习笔记12:图像渲染(Shader)
- [Unity基础]从“漫反射光照模型”了解Unity Shader渲染原理
- 关于Unity中混合模式、Alpha测试、深度测试、通道遮罩、面剔除的使用----渲染通道通用指令(二)
- unity, 替换shader渲染(Rendering with Replaced Shaders)
- [UnityShader]渲染队列、ZWrite和ZTest
- 学习shader之前必须知道的东西之计算机图形学——渲染管线
- 学习shader之前必须知道的东西之计算机图形学——渲染管线
- 3D地形多层纹理混合加阴影渲染方法
- Android学习笔记进阶15之Shader渲染
- 3D引擎:Horde3D:Shader类里的 结构体,以及渲染一个 Logo的简单流程(三)
- 详解Unity3D Shader开发之渲染管线
- ogre 渲染时候需要顶点支持颜色混合和alpha渲染状态需要作如下设置
- Unity 全局雾效Shader:基于摄像机距离的雾效渲染
- Android学习笔记12:图像渲染(Shader)
- html5 canvas 渲染像素混合模式