스트로크 너비가 5 인 패스를 사용하여 정의 된대로 모양을 그려야합니다. 모든 스트로크가 안쪽 획 및 반쪽 바깥 쪽 선의 절반보다 경로 안에있는 경우입니다.안드로이드 - 경로 안의 획
감사
칼
스트로크 너비가 5 인 패스를 사용하여 정의 된대로 모양을 그려야합니다. 모든 스트로크가 안쪽 획 및 반쪽 바깥 쪽 선의 절반보다 경로 안에있는 경우입니다.안드로이드 - 경로 안의 획
감사
칼
는 스트로크 (즉 외부, 내부, 또는 중심)의 위치를 제어 할 수없는 것으로 보인다. 예를 들어, 그리는 동안 Android Paint stroke width positioning
내 솔루션은 스트로크 폭을 상쇄,
final RectF rectF = new RectF(halfStrokeWidth, halfStrokeWidth, width - halfStrokeWidth, height - halfStrokeWidth);
canvas.drawRoundRect(rectF, roundX, roundY, paint);
당신은 도움을 CornerPathEffect 클래스를 사용할 수 있습니다에 대한 추가 정보를 원하시면를 참조하십시오! 예를 들어 둥근 모양으로 그리기.
canvas.drawRoundRect() 메서드를 사용하여 반경이있는 배경색을 그리고 페인트가 Style.FILL을 설정하는 동안 둥근 사각형 모양을 얻을 수 있습니다. 그리고 같은 방법을 사용하여 페인트의 설정의 Style.STROKE와 너비로 원형 직사각형 테두리를 그립니다. 테두리를 얻을 수 있습니다.
코드 :
이의이 CornerPathEffect을 해보자 :, 일부 배경 및 테두리 사이의 오프셋을 한 내가 원하는 것을 지금의 모습
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBorderPaint);
하지
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
// use CornerPathEffect and then use drawRect() method
mBorderPaint.setPathEffect(new CornerPathEffect(mRadius/2));
canvas.drawRect(mBackgroundRectF, mBorderPaint);
이제 올바르게 보입니다.
두 배의 스트로크 스트로크로 문제를 해결할 수 있습니다! – YXP
사용 Canvas#clipPath(Path, Op)
. 그러나 하드웨어 가속 캔버스의 경로에 클리핑을 지원하면 Android 3.0 및 reintroduced in 4.3에서 제거되었습니다. 분명히 3.0-4.2에 대해 workaround이 있었지만 테스트 할 방법이 없습니다.
나는이 문제를 이해하지 못한다. 당신은 더 구체적 일 수 있는가? "모든 뇌졸중이 뇌졸중의 절반이 아니라 경로의 내부에있다"는 것은 무엇을 의미합니까? – Marek
스트로크가 검정색으로 10 픽셀 인 스트로크를 그린 다음 스트로크가 5 픽셀 인 빨강으로 모양을 그린 다음 빨간색 패스는 검정 패스의 너비의 절반이되며 중간에 스트로크의 절반이 모양 경계 안에 있고 반은 바깥에있을 것입니다. 대신 내가 원하는 것은 모든 스트로크가 도형 경계 안에 있어야한다는 것입니다. 위의 예에서 빨간색 스트로크는 검정색 스트로크의 한쪽 측면에 있으며 모양 경계에 가장 가까운 쪽 – user2430147