2012-03-14 2 views
0

밀도에 따라 너비가있는 선을 그려 봅니다. 문제는 내가 원하는 너비를 setStrokeWidth() 메서드로 페인트 할 수 없다는 것입니다.왜 안드로이드 그래픽 페인트는 1.5 배율을 가지고 있습니까

...  
private void init(){ 
     paint = new Paint(); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.BLACK);   
     paint.setStrokeWidth(3);  
    } 

@Override 
    protected void onDraw(Canvas canvas){ 
     canvas.drawLine(0, 0, getWidth(), 0, paint);   
    } 
... 

상기 코드 모두 MDPI 및 hdpi에 화면의 2 픽셀의 폭을 갖는 라인을 표시 여기서 코드이다. 지정된 너비의 선을 그리려면 페인트를 어떻게 만들 수 있습니까? 1.5 배율 계수는 어디에서 오는 것입니까?

답변

2

캔버스의 절대 상단에 그림을 그려서 선의 절반 만 보이게합니다. 그 이유는 2 픽셀 너비입니다. 전체 라인을 보려면 조금 아래로 이동하십시오.

float scale = getResources().getDisplayMetrics().density; 
int sizeInDp = (int) (desiredWidthInPx*scale + 0.5f); 

paint.setStrokeWidth(sizeInDp); 
+0

고마워 :

는 다음과 같은 코드를 사용할 수 있습니다 밀도 종속 값을 만들려면! 경험적으로이 솔루션을 찾았습니까? 아니면 문서의 어딘가에 힌트가 있습니까? – Zzokk

+0

안드로이드 개발자의이 페이지에서 간단히 언급합니다 (* 밀도 독립적 픽셀 * 부분 참조). http://developer.android.com/guide/practices/screens_support.html 하지만 완전한 공식을 얻었습니다. 그래서 다른 질문에서. – Jave

+0

다시 한번 감사드립니다. – Zzokk

관련 문제