나는 손가락 페인트를 사용하여 선을 그리려고하고 있으며 그 선을 여러 색상으로 모두 그려 내고 싶습니다. 모두 잘 작동합니다. 그러나 처음에는 선을 그릴 때 처음에는 아무 문제가 없지만 다른 선을 그으면 첫 번째 선의 색이 그 것으로부터 사라져 단일 선처럼됩니다.안드로이드에서 선 색상이 첫 번째 선 색상에서 오버라이드됩니다.
모든 참조 링크도 좋습니다 .. !!!!
미리 감사드립니다.
나는 손가락 페인트를 사용하여 선을 그리려고하고 있으며 그 선을 여러 색상으로 모두 그려 내고 싶습니다. 모두 잘 작동합니다. 그러나 처음에는 선을 그릴 때 처음에는 아무 문제가 없지만 다른 선을 그으면 첫 번째 선의 색이 그 것으로부터 사라져 단일 선처럼됩니다.안드로이드에서 선 색상이 첫 번째 선 색상에서 오버라이드됩니다.
모든 참조 링크도 좋습니다 .. !!!!
미리 감사드립니다.
색 차이는 pointsToDraw
크기로 생성 된 hue
속성에 의존한다고 가정 할 수 있습니다.
// set paint to whatever color you want
float hue = (float)i /pointsToDraw.size();
당신이 화면에 그리는 모든 라인의 정확한 복사본은 아닙니다 이전, 권리? pointsToDraw
크기가 다양하며, 결과로 hue
다른 라인에 대한 서로 다른 값을 가지게됩니다.
그리고 hue
이 선 색을 생성하는 데 사용되므로 모든 새 선은 고유 한 색을 갖게됩니다.
mPaint.setColor(Color.HSVToColor(
new float[] {
hue*360, 1, 1
}));
이 가정을 테스트하려면 hue
에 상수 값을 할당하고 차이가 있는지 확인하십시오.
코드가 수행하는 작업은 각 경로의 새 세그먼트를 페인팅 할 때 색을 부드럽게 변경하는 것입니다. 이는 선에서 이루어집니다 : 나는 당신의 반복 변수이기 때문에
float hue = (float)i /pointsToDraw.size();
mPaint.setColor(Color.HSVToColor(
new float[] {
hue*360, 1, 1
}));
hue
hue
을 계산하는 대신 화면에있는 경로 수 (즉,
pointsToDraw.size()
)에 의존하는 값을 사용하고 있다는 것입니다.
그래서 다음 코드가 그렇게 할 것이라고 생각합니다.) I/200 (=`색조 플로트; (제가했던 것은 단지 대신 pointsToDraw.size()``에 deviding의 hue
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(clearCanvas)
{ // Choose the colour you want to clear with.
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
clearCanvas = false;
fl.invalidate();
}else {
synchronized(pointsToDraw)
{
for (ArrayList<Point> paths : pointsToDraw) {
for (int i=0; i<paths.size()-1; ++i) {
// set paint to whatever color you want
float hue = (float)i /(paths.get(0).x+paths.get(0).y);
mPaint.setColor(Color.HSVToColor(
new float[] {
hue*360, 1, 1
}));
canvas.drawLine(paths.get(i).x, paths.get(i).y, paths.get(i+1).x, paths.get(i+1).y, mPaint);
}
}
}
}
}
을 계산하는 제수를 변화처럼, 일정한 값으로 나눔하려고 '다른 값으로 플레이하고 결과가 있는지 확인하십시오. –