2011-08-11 18 views
1

나는 drawpath를위한이 코드를 가지고 있는데, 아무 것도 나타나지 않고 왜 그럴 수 없는지를 알 수 없다. 당신이 함께 플레이 할 수 있습니다왜 drawPath가 작동하지 않습니까?

private final int strokeWidth = 50; 

path.lineTo(a.getCenterX() + strokewidth/2, a.getCenterY() + strokeWidth/2); 
path.moveTo(a.getCenterX(), a.getCenterY()); 

p.setStrokeWidth(strokeWidth); 
p.setColor(Color.BLACK); 
canvas.drawPath(path,p); 

: 사전에

//i move the path's starting point somewhere up here to a point. 
//get center x and y are the centers of a picture. it works when i 
//do drawline and store the different starting points 
//but i want it to look continuous not like a lot of different 
//lines 

path.lineTo(a.getCenterX(), a.getCenterY()); 
path.moveTo(a.getCenterX(), a.getCenterY()); 


p.setStrokeWidth(50); 
p.setColor(Color.BLACK); 
canvas.drawPath(path,p); 

drawpath image

덕분에

+0

어디에서이 코드를 호출합니까? ondraw 방법에서 – Codeman

+0

. 내가 그림을 통해 반복하고 drawline을하면 작동하지만 계속 보이지 않습니다. 당신은 그들이 분리 선이라고 말할 수 있습니다. – Robin

+0

당신은 그것들이 분리 된 줄/연속적이지 않다는 것을 무엇을 의미합니까? 스크린 샷/비디오를 게시하거나 더 자세히 설명 할 수 있습니까? 또한 onDraw 메서드의 맨 위에서 super.onDraw()를 호출하는지 확인하십시오. – Codeman

답변

5

작동시키기 위해서 페인트에 이것을 추가해야했습니다. 이유 몰라.

mPaint.setDither(true); 
mPaint.setColor(0xFFFFFF00); 
mPaint.setStyle(Paint.Style.STROKE);  
mPaint.setStrokeJoin(Paint.Join.ROUND); 
mPaint.setStrokeCap(Paint.Cap.ROUND); 
mPaint.setStrokeWidth(3); 
0

나는 당신의 문제를 해결하는 가장 좋은 방법을 다음과 같이 코드를 변경하여 생각 , 그러나 이것은 기본적으로 줄을 겹쳐서 연속적으로 보입니다.

그리기 방향에 스위치 문을 넣어야 할 가능성이 있지만 상당히 간단합니다.

도움이 되었기를 바랍니다.

+0

이것이 내가하는 것에 대해 생각하고있는 것이지만, 좀 더 효율적으로 드로우 패스를 사용할 수 있다고 생각했습니다. 내가 올바르게 drawpath를 사용하고 있었습니까? – Robin

+0

제대로 사용했다면, 줄 바꿈을 줄의 중심으로 계산한다는 것을 기억해야합니다. 당신은 다른 브러쉬를 사용하여 놀 수 있고 그것이 더 잘 작동 하는지를 볼 수 있습니다. 그러나 직선을 위해, 나는 이것이 최선의 해결책이라고 생각합니다. 또한 이것은 덜 효율적인 것은 아닙니다. 이것은 매우 가벼운 알고리즘입니다 (인수에 2 개의 정수를 더함). – Codeman

+0

그것은 페인트에 문제가되는 것을 끝내었다. 게시 된 답변을 참조하십시오. – Robin

7

새 페인트 인스턴스는 경로를 채운다. 당신이 그림있는 배경이 검은 색 경우 페인트 볼 수 있도록, 색상을 변경,

paint.setStyle(Paint.Style.STROKE); 

:

paint.setColor(Color.RED); // something other than the background color 

스트로크 으로 경로, 페인트 스타일을 설정

선택 사항 :

paint.setStrokeWidth(10); // makes the line thicker 
+1

이것은 올바른 대답입니다! 아주 잘 작동합니다! – Wojtek

관련 문제