Canvas画图设置渐变色
来源:互联网 发布:百度大数据交响乐 编辑:程序博客网 时间:2024/05/01 08:58
1、线形图设置填充色为渐变色方法:
/** * Draws the provided path in filled mode with the provided drawable. * * @param c * @param filledPath * @param drawable */protected void drawFilledPath(Canvas c, Path filledPath, Drawable drawable) { if (clipPathSupported()) { c.save(); c.clipPath(filledPath); drawable.setBounds((int) mViewPortHandler.contentLeft(), (int) mViewPortHandler.contentTop(), (int) mViewPortHandler.contentRight(), (int) mViewPortHandler.contentBottom()); drawable.draw(c); c.restore();//在canvas上设置渐变色图片 } else { throw new RuntimeException("Fill-drawables not (yet) supported below API level 18, " + "this code was run on API level " + Utils.getSDKInt() + "."); }}渐变色图片:
最终效果:
具体代码参见:MPChartLibrary开源项目中的LineRadarRenderer.class类
2、为canvas背景设置渐变色
final Drawable drawable = dataSet.getFillDrawable(); c.save(); drawable.setBounds((int) mViewPortHandler.contentLeft(), (int) mViewPortHandler.contentTop(), (int) mViewPortHandler.contentRight(), (int) mViewPortHandler.contentBottom()); drawable.draw(c);// mRenderPaint.setColor(dataSet.getColor()); for (int j = 0; j < buffer.size(); j += 4) { if (!mViewPortHandler.isInBoundsLeft(buffer.buffer[j + 2])) continue; if (!mViewPortHandler.isInBoundsRight(buffer.buffer[j])) break; c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2], buffer.buffer[j + 3], mRenderPaint); if (drawBorder) { c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2], buffer.buffer[j + 3], mBarBorderPaint); } } c.restore();
效果图:看后面背景
代码初步是在BarChartRenderer.class中做了修改。并且在
BaseDataSet.class中添加了两个接口
public Drawable getFillDrawable() { return mFillDrawable;}/** * Sets the drawable to be used to fill the area below the line. * * @param drawable */@TargetApi(18)public void setFillDrawable(Drawable drawable) { this.mFillDrawable = drawable;}大致是这样的修改的。具体可再优化。
3、为柱状图每个元素设置渐变色
for (int j = 0; j < buffer.size(); j += 4) { if (!mViewPortHandler.isInBoundsLeft(buffer.buffer[j + 2])) continue; if (!mViewPortHandler.isInBoundsRight(buffer.buffer[j])) break; //设置柱状图的颜色为渐变色 LinearGradient linearGradient = new LinearGradient(0, 0, 0, 2000,Color.GREEN, Color.WHITE, Shader.TileMode.CLAMP); mRenderPaint.setShader(linearGradient);//目标Paint即为绘制柱的Paint c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2], buffer.buffer[j + 3], mRenderPaint); if (drawBorder) { c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2], buffer.buffer[j + 3], mBarBorderPaint); } }
效果图:
0 0
- Canvas画图设置渐变色
- HTML5 Canvas 画图标签、画线、圆、渐变色
- 第四讲 HTML5 Canvas 画图标签 & 画线,圆,渐变色
- HTML5 Canvas 画图标签 & 画线,圆,渐变色
- canvas中如何设置渐变色
- 渐变终点html5 Canvas画图4:填充和渐变
- canvas-渐变色
- canvas绘制之渐变色
- Canvas渐变
- canvas渐变
- canvas渐变
- Canvas画图
- Canvas画图
- canvas 画图
- canvas 画图
- 设置渐变色
- 设置窗口渐变色
- 设置渐变色
- 1019. 数字黑洞 (20)
- 用代码来画画 —— Ray-Marching(光线步进)【Unity Shader】
- git忽略某文件夹,但保留文件夹内的其它文件夹
- Git 常用技巧
- 《转》android利用socket与java后台交互的设计与实现
- Canvas画图设置渐变色
- Git操作指南
- JQuery -- this 和 $(this) 的区别
- Action 中获取表单数据的三种方式
- 中山大学转专业过程及心得
- urllib2 实现简单爬取12306网站
- hdu 2012 素数判定
- Python高级数据处理与可视化(三)---- Matplotlib图像属性控制
- 2007年北理复试上机题