2014-11-04 1 views
0

onDraw 메서드를 재정의하는 사용자 지정보기를 작성하고 있습니다.뷰 패딩을 사용하여 캔버스를 축소하는 방법은 무엇입니까?

이보기 패딩 값으로 캔버스를 계약하는 방법 (onDraw에서 인수로 받음)이 있습니까?

그리고 패딩 자체에 대한 가능한 질문에 대답하십시오 - 제 경우에는 여백을 사용할 수 없습니다. 나는 패딩을 사용할 필요가있다.

+1

예, clipRect – pskink

답변

0

모든보기에는 각 패딩의 값을 제공하는 getPaddingTop/Bottom/Left/Right() 메소드가 있습니다.

당신이 당신의 캔버스에 그릴 때, 당신은 당신이 항상이 범위의 그릴하는지 확인해야합니다

minX = getPaddingLeft() 
maxX = getWidth() - getPaddingLeft() - getPaddingRight() 
minY = getPaddingTop() 
maxY = getHeight() - getPaddingTop() - getPaddingBottom() 

편집 :

당신이에 어떤 영역을 제한하려면 캔버스가에 그릴 수, 캔버스에서 다음 호출을 사용해보십시오 :

canvas.clipRect(minX, minY, maxX, maxY, Region.Op.REPLACE); 

아무것도 이러한 한계를 벗어난됩니다 ignor됩니다 에드.

캔버스에서 변형 작업 (예 : 번역)을 시작할 때까지 제대로 작동합니다. 일단 시작하면 일이 조금 이상해지기 시작하고 런타임 중에 clipRect를 변경해야 할 수도 있습니다.

+0

을 호출합니다.이 접근법을 사용할 수 없습니다 ... 설명을 단순화하기 위해 그림 그 자체가 제 3 부분 라이브러리에 의해 수행되고 있으며, 실제로 드로잉 범위와 상호 작용할 수는 없습니다. 나는이 도서관에 나의 캔버스를 줄 수 있고, 마술이 일어날 때까지 기다릴 수있다. 따라서 내 질문에 대한 캔버스 계약입니다 ... –

+0

내 대답을 편집 –

+0

좋아, 유망한 것으로 보인다. 나중에 확인해 보겠습니다. –

0

하나의 옵션은, (패딩없이) 내부 크기의 비트 맵을 만들 라이브러리에 그 전달하고, (캔버스 또 다른 옵션은 접촉을 사용하여 캔버스를 번역하는 것입니다

을에 비트 맵을 그릴 수있다) 왼쪽과 위의 패딩으로 캔버스를 움직이는 매트릭스가 있습니다. 또한 라이브러리가 밑바닥과 오른쪽 패딩 위에 그릴 수 없도록 캔버스를 자르십시오

관련 문제