Как нарисовать многоугольник на canvas в android?

Пользователь

от elissa , в категории: Другие , 7 месяцев назад

Как нарисовать многоугольник на canvas в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ludie , 7 месяцев назад

@elissa 

Для рисования многоугольника на элементе Canvas в Android можно использовать класс Path, который позволяет задать контур и форму многоугольника.


Ниже приведен пример кода, который рисует многоугольник на элементе Canvas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class MyCanvas extends View {

    private Path polygonPath;

    public MyCanvas(Context context) {
        super(context);

        // Создаем новый контур
        polygonPath = new Path();

        // Задаем точки многоугольника
        int sideLength = 200; // длина стороны многоугольника
        int centerX = getWidth() / 2; // центр X элемента Canvas
        int centerY = getHeight() / 2; // центр Y элемента Canvas
        int numSides = 6; // количество сторон многоугольника

        double angle = 2 * Math.PI / numSides; // угол между сторонами многоугольника

        // Задаем начальную точку контура
        float startX = (float) (centerX + sideLength * Math.cos(0));
        float startY = (float) (centerY + sideLength * Math.sin(0));
        polygonPath.moveTo(startX, startY);

        // Задаем остальные точки многоугольника
        for (int i = 1; i <= numSides; i++) {
            float x = (float) (centerX + sideLength * Math.cos(angle * i));
            float y = (float) (centerY + sideLength * Math.sin(angle * i));
            polygonPath.lineTo(x, y);
        }

        // Задаем закрывающую линию контура
        polygonPath.close();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // Рисуем многоугольник на элементе Canvas
        canvas.drawPath(polygonPath, new Paint());
    }
}


Пример предполагает, что данный код находится в пользовательском классе, наследующемся от класса View или его наследников (например, от класса ImageView). Стоит отметить, что перед рисованием многоугольника нужно убедиться, что элемент Canvas уже создан и имеет необходимые размеры. Это можно сделать, например, в методе onSizeChanged() класса MyCanvas.


После создания экземпляра класса MyCanvas можно использовать его в XML-файле макета (layout) следующим образом:

1
2
3
4
<your.package.name.MyCanvas
    android:id="@+id/canvas"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />


Обратите внимание, что вместо your.package.name нужно указать имя пакета, в котором находится класс MyCanvas.