ColorPicker.java 文件源码

java
阅读 40 收藏 0 点赞 0 评论 0

项目:planetcon 作者:
private void drawColorDiamond(Canvas canvas, double hueAngle, double radius) {
    int pureColor, brightColor, darkColor;
    double leftAngle = hueAngle + Math.toRadians(120);
    double rightAngle = hueAngle - Math.toRadians(120);

    float tipAngleX = xToDraw(Math.cos(hueAngle) * radius);
    float tipAngleY = yToDraw(Math.sin(hueAngle) * radius);
    float leftAngleX = xToDraw(Math.cos(leftAngle) * radius);
    float leftAngleY = yToDraw(Math.sin(leftAngle) * radius);
    float rightAngleX = xToDraw(Math.cos(rightAngle) * radius);
    float rightAngleY = yToDraw(Math.sin(rightAngle) * radius);

    mTrianglePath.reset();
    mTrianglePath.moveTo(tipAngleX, tipAngleY);
    mTrianglePath.lineTo(rightAngleX, rightAngleY);
    mTrianglePath.lineTo(leftAngleX, leftAngleY);
    mTrianglePath.lineTo(tipAngleX, tipAngleY);

    // pureColor
    mHSV[0] = mColorHSV[0];
    mHSV[1] = 1; mHSV[2] = 1;
    pureColor = Color.HSVToColor(mHSV);
    // brightColor
    mHSV[1] = 0; mHSV[2] = 1;
    brightColor = Color.HSVToColor(mHSV);
    // darkColor
    mHSV[1] = 1; mHSV[2] = 0;
    darkColor = Color.HSVToColor(mHSV);

    Shader gradient1 = new LinearGradient(leftAngleX, leftAngleY, tipAngleX, tipAngleY, brightColor, pureColor, TileMode.CLAMP);
    Shader gradient2 = new LinearGradient(leftAngleX, leftAngleY, rightAngleX, rightAngleY, brightColor, darkColor, TileMode.CLAMP);
    ComposeShader composeShader = new ComposeShader(gradient1, gradient2, PorterDuff.Mode.MULTIPLY);

    mColorPaint.setShader(composeShader);
    canvas.drawPath(mTrianglePath, mColorPaint);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号