Android:Paint画笔的常用设置,高级方法使用 |
您所在的位置:网站首页 › 怎么设置常用笔刷的颜色深浅 › Android:Paint画笔的常用设置,高级方法使用 |
无参创建画笔对象
mPaint = new Paint();
设置画笔颜色
mPaint.setColor(Color.red);
通过ARGB设置 颜色
mPaint.setARGB(255,255,255,0);
设置透明度
mPaint.setAlpha(100);
设置抗锯齿
mPaint.setAntiAlias(true);
设置画笔样式 STROKE:描边 FILL:填充 FILL_AND_STROKE:两种效果
mPaint.setStyle(Paint.Style.STROKE);
设置描边宽度
mPaint.setStrokeWidth(4);
设置圆角效果 BUTT:默认(无圆角) ROUND:圆角 SQUARE:方角
mPaint.setStrokeCap(Paint.Cap.ROUND);
设置拐角风格 MITER:尖角 ROUND:圆角 BEVEL:折角
mPaint.setStrokeJoin(Paint.Join.MITER);
设置渲染器
mPaint.setShader(new SweepGradient(200,200,Color.BLUE,Color.RED));
设置混合模式
mPaint.setXfermode(new PorterDuffxfermode(PorterDuff.Mode.DARKen));
设置颜色过滤器
mPaint.setColorFilter(new LightingColorFilter(0x00ffff,0x000000));
设置双线性过滤
mPaint.setFilterBitmap(true);
设置画笔遮罩滤镜,传入度数和样式 NORMAL:模糊里面和外面(默认)SOLID:OUTER:INNER
mPaint.setMaskFilter(new BlurMaskFilter(10,BlurMaskFilter.Blur.NORMAL));
设置文本缩放倍数
mPaint.setTextScaleX(2);
设置字体大小
mPaint.setTextSize(20);
设置对齐方式
mPaint.setTextAlign(Paint.Align.LEFT);
设置下划线
mPaint.setUnderlineText(true);
String str = “Android高级工程师”;
Rect rect = new Rect();
测量文本大小,将文本大小信息存放到rect
mPaint.getTextBounds(str,0,str.length(),rect);
获取文本的宽
mPainasureText(str);
获取字体度量对象
mPaint.getFontMetrics();
下面主要分析这几个方法的使用和效果 1.setStrokeCap(Paint.Cap.ROUND); 设置圆角效果 BUTT:默认(无圆角) ROUND:圆角 SQUARE:方角 2.setStrokeJoin(Paint.Join.MITER); 设置拐角风格 MITER:尖角 ROUND:圆角 BEVEL:折角 3.setFilterBitmap(true); 设置双线性过滤,可以试图片更加平滑过渡不生硬 4.getFontMetrics();获取字体度量对象,包含如下属性 5.setshader(),设置渲染器 此小节默认设置 mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true);(1)、线性渲染 /** * public LinearGradient(float x0, float y0, float x1, float y1, @NonNull @ColorInt int colors[], * @Nullable float positions[], @NonNull Shader.TileMode tile) * @param x0 渐变起点坐标 * @param y0 * @param x1 渐变结束点坐标 * @param y1 The y-coordinate for the end of the gradient line * @param colors 渐变颜色数组 * @param positions 位置数组,position取值范围[0,1],作用是指定某个位置的颜色值,如果传null,就是线性渐变 * @param tile The Shader tiling mode */ Shader mShader = new LinearGradient(0, 0, 500, 500, new int[]{Color.RED, Color.BLUE, Color.GREEN}, new float[]{0f, 0.7f, 1f}, Shader.TileMode.CLAMP); Paint mPaint = new Paint(); mPaint.setShader(mShader); canvas.drawRect(0, 0, 500, 500, mPaint);效果如下: (2)、环形渲染 /** *参数参考线性,前三个参数为,圆点坐标及半径 **/ Shader mShader = new RadialGradient(250, 250, 250, new int[]{Color.RED, Color.BLUE, Color.GREEN}, new float[]{0f, 0.7f, 1f}, Shader.TileMode.CLAMP); Paint mPaint = new Paint(); mPaint.setShader(mShader); canvas.drawCircle(250, 250, 250, mPaint);效果如下: (3)、扫描渲染 Shader mShader = new SweepGradient(250, 250,Color.RED, Color.BLUE); Paint mPaint = new Paint(); mPaint.setShader(mShader); canvas.drawCircle(250, 250, 250, mPaint);效果如下: (4)、位图渲染 /** * @param bitmap 位图图片 * @param tileX x方向渲染模式 * @param tileY y方向渲染模式 */ Shader mShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); Paint mPaint = new Paint(); mPaint.setShader(mShader); canvas.drawDect(0,0,500,500, mPaint);其中,渲染模式有:(当绘制区域大于图片(bitmap)大小时) CLAMP:xy方向最后一个像素铺满 REPEAT:整个图片平铺 MIRROR:镜像平铺
(5)、组合渲染,只能组合两种 Shader shader1 = new LinearGradient(0, 0, 500, 500, new int[]{Color.RED, Color.BLUE, Color.GREEN}, new float[]{0f, 0.7f, 1f}, Shader.TileMode.CLAMP); Shader shader2 = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); Shader mShader = new ComposeShader(shader1,shader2,PorterDuff.Mode.MULTIPLY); mPaint.setShader(mShader); canvas.drawCilcle(250,250,250,mPaint);效果如下: 其中,PorterDuff.Mode.MULTIPLY是图层的18种混合模式之一,小伙伴们感兴趣的话,可以自行百度。 好啦,这篇学习笔记就到这里,欢迎大家交流指正。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |