2012-02-28 3 views
0

내 목표는 직사각형이 아닌 모양의 비트 맵을 생성하는 것입니다. 저는 캔버스의 clipPath 메소드와 같이 사용할 수있는 경로를 만들었습니다. 그 clipPath를 움직일 수 있습니까?Android - 이동이 불가능한 비 직사각형 비트 맵 만들기

또한 최선의 방법으로 수행하고 있습니까? 아니면이를 수행하는 더 좋은 방법이 있습니까?

가 여기 내 그리기 기능이다 : 나는 내 문제에 봉착 곳

public void draw(Canvas c){ 

    // Paint object, for outline of clip Path. 
    Paint p = new Paint(); 
    p.setStyle(Style.STROKE); 
    p.setColor(Color.RED); 

    // A currently defined path to clip the bitmap with 
    Path clipPath = new Path(); 
    clipPath.moveTo(top_left.getX() + nodes.getNodeVals('L').getX(), top_left.getY() + nodes.getNodeVals('T').getY()); 
    clipPath.addPath(outline); 

    c.save(); // Save the canvas (rotations, transformations, etc) 
    c.clipPath(clipPath); // Create a clip region 
    c.drawPath(clipPath, p); // Draw that clip region in red 
    c.drawBitmap(img, top_left.getX(), top_left.getY(), null); // Draw the bitmap in the clip 
    c.restore(); // Restore the canvas (rotations, transformations, etc) 

} 

clipPath.moveTo 라인, 나는 생각합니다. 기본적으로, 그것은 moveTo의 x와 y 값으로 정의 된 위치에있는 새 경로를 만들어야합니다 (나는 다른 곳에 정확하게 설정 한 것을 믿습니다). 경로는 미리 만들어져 outline에 저장되고 addPath 부분은 개요를 clipPath에 추가해야합니다.

미리 감사드립니다.

답변

1

정확하게 무엇을 하려는지 정확히 이해할 수는 없지만 단순히 원래 위치에서 경로를 오프셋하려는 경우 moveTo는 경로 좌표 이후로 이동하는 방법이 아닙니다. 추가하면 유지됩니다.

대신에, 당신은 당신의 addPath에 오프셋 좌표를 추가 할 수 있습니다 : DX와 DY 당신의 오프셋 (offset)입니다

//clipPath.addPath(outline); 
clipPath.addPath(outline, dx, dy); 

.