Android - Создание подвижного непрямоугольного растрового изображения - PullRequest
0 голосов
/ 28 февраля 2012

Моя цель сейчас - создать растровое изображение непрямоугольной формы, которое я тоже могу перемещать. Я создал путь, который я могу использовать как с методом clipPath холста. Можно ли переместить этот clipPath вокруг?

Кроме того, я делаю это лучшим способом или есть лучший способ сделать это?

Вот моя функция рисования:

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 - это то, где у меня проблемы, я полагаю. По сути, это должно быть создание нового пути, который находится в местоположении, определенном значениями x и y для moveTo (я полагаю, что они правильно установлены в другом месте). Путь создается заранее и сохраняется в outline, а часть addPath должна добавить схему к clipPath.

Заранее спасибо!

1 Ответ

1 голос
/ 07 сентября 2012

Я не совсем уверен, правильно ли я понимаю, что именно вы пытаетесь сделать, но если вы просто хотите сместить траекторию от ее первоначального положения, moveTo - это не тот путь, так как координаты пути выadd будет сохранен.

Вместо этого вы можете добавить координаты смещения в свой addPath:

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

, где dx и dy - ваши смещения.

...