Skip to content

PointMode

Defines how a list of points is interpreted when drawing a set of points.

Inherits: Enum

Properties

  • LINES

    Draw each sequence of two points as a line segment. If the number of points is odd, then the last point is ignored. The lines are stroked as described by the Paint (ignoring Paint.style).

  • POINTS

    Draw each point separately. If the Paint.stroke_cap is StrokeCap.ROUND, then each point is drawn as a circle with the diameter of the Paint.stroke_width, filled as described by the Paint (ignoring Paint.style). Otherwise, each point is drawn as an axis-aligned square with sides of length Paint.stroke_width, filled as described by the Paint (ignoring Paint.style).

  • POLYGON

    Draw the entire sequence of point as one line. The lines are stroked as described by the Paint (ignoring Paint.style).

Examples#

Showcase#

import flet as ft
import flet.canvas as cv

POINTS = [
    (25, 75),
    (70, 30),
    (115, 75),
    (160, 30),
    (205, 75),
]


def showcase_card(mode: cv.PointMode) -> ft.Container:
    return ft.Container(
        width=320,
        padding=12,
        border=ft.Border.all(1, ft.Colors.RED),
        border_radius=10,
        bgcolor=ft.Colors.SURFACE_CONTAINER_LOW,
        content=ft.Column(
            spacing=8,
            controls=[
                ft.Text(mode.name, weight=ft.FontWeight.BOLD),
                cv.Canvas(
                    width=240,
                    height=110,
                    shapes=[
                        cv.Points(
                            points=POINTS,
                            point_mode=mode,
                            paint=ft.Paint(
                                color=ft.Colors.PRIMARY,
                                stroke_width=12,
                                stroke_cap=ft.StrokeCap.ROUND,
                            ),
                        )
                    ],
                ),
            ],
        ),
    )


def main(page: ft.Page):
    page.theme_mode = ft.ThemeMode.DARK
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    page.appbar = ft.AppBar(title="PointMode Showcase")
    page.add(
        ft.Text(
            "Compare how the same coordinate list is interpreted by each point mode."
        ),
        ft.Row(
            wrap=True,
            spacing=12,
            expand=True,
            scroll=ft.ScrollMode.AUTO,
            alignment=ft.MainAxisAlignment.CENTER,
            controls=[showcase_card(mode) for mode in cv.PointMode],
        ),
    )


ft.run(main)

Properties#

LINES = 'lines' class-attribute instance-attribute #

Draw each sequence of two points as a line segment. If the number of points is odd, then the last point is ignored. The lines are stroked as described by the Paint (ignoring Paint.style).

POINTS = 'points' class-attribute instance-attribute #

Draw each point separately. If the Paint.stroke_cap is StrokeCap.ROUND, then each point is drawn as a circle with the diameter of the Paint.stroke_width, filled as described by the Paint (ignoring Paint.style). Otherwise, each point is drawn as an axis-aligned square with sides of length Paint.stroke_width, filled as described by the Paint (ignoring Paint.style).

POLYGON = 'polygon' class-attribute instance-attribute #

Draw the entire sequence of point as one line. The lines are stroked as described by the Paint (ignoring Paint.style).