Graphics move_to and line_to interfaces¶
This page explains the Graphics
class move_to
and line_to
method interfaces.
What interfaces are they?¶
The move_to
interface sets the line start point. The line_to
draws the line from a current point to a destination point. Sequentially, if you call the line_to
interface, the line becomes polyline.
If you call the move_to
interface after the calling of line_to
, it creates a new line instance.
Basic usage¶
The move_to
and line_to
interfaces have x and y arguments.
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=300,
stage_height=100,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.line_style(color=ap.Color("#0af"), thickness=5)
# Move to x=50, y=50 point (no drawing).
sprite.graphics.move_to(x=50, y=50)
# Draw the line from the current point (50, 50) to the
# destination point (250, 50).
sprite.graphics.line_to(x=250, y=50)
ap.save_overall_html(dest_dir_path="graphics_move_to_and_line_to_basic_usage/")
Sequential calling of the line_to interface¶
Sequentially, if you call the line_to
interface, the result line becomes the polyline.
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=200,
stage_height=200,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.line_style(color=ap.Color("#0af"), thickness=5)
# Move to x=50, y=50 point (no drawing).
sprite.graphics.move_to(x=50, y=50)
# Draw the line from the current point (50, 50) to the
# destination point (150, 50).
sprite.graphics.line_to(x=150, y=50)
# Draw the line from the current point (250, 50) to the
# destination point (50, 150). This calling changes the line
# to the polyline.
sprite.graphics.line_to(x=50, y=150)
# Finally the polyline becomes Z shape by drawing to
# destination point (150, 150).
sprite.graphics.line_to(x=150, y=150)
ap.save_overall_html(dest_dir_path="graphics_move_to_and_line_to_sequential_calling/")
move_to interface calling after line_to interface calling¶
If you call the move_to
interface after calling the line_to
interface, it creates a new line instance.
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=250,
stage_height=150,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.line_style(color=ap.Color("#0af"), thickness=5)
# First move_to interface calling.
sprite.graphics.move_to(x=50, y=50)
sprite.graphics.line_to(x=100, y=50)
sprite.graphics.line_to(x=50, y=100)
sprite.graphics.line_to(x=100, y=100)
# Second move_to interface calling. This will create a new
# polyline instance.
sprite.graphics.move_to(x=150, y=50)
sprite.graphics.line_to(x=200, y=50)
sprite.graphics.line_to(x=150, y=100)
sprite.graphics.line_to(x=200, y=100)
ap.save_overall_html(
dest_dir_path="graphics_move_to_and_line_to_multi_move_to_calling/"
)
Polyline instance¶
move_to
and line_to
interfaces will return Polyline
instance. You can update each setting or bind events to that instance.
For instance, the following script sets the mouse event to Polyline
, updates the line color, and sets dot style in the handler (on_line_click
).
import apysc as ap
def on_line_click(e: ap.MouseEvent[ap.Polyline], options: dict) -> None:
"""
The handler that the line instance calls when clicked.
Parameters
----------
e : MouseEvent
The event instance.
options : dict
Optional arguments.
"""
polyline: ap.Polyline = e.this
polyline.line_color = ap.Color("#f0a")
polyline.line_dot_setting = ap.LineDotSetting(dot_size=5)
ap.Stage(
background_color=ap.Color("#333"),
stage_width=200,
stage_height=100,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
sprite.graphics.line_style(color=ap.Color("#0af"), thickness=30)
polyline: ap.Polyline = sprite.graphics.move_to(x=50, y=50)
sprite.graphics.line_to(x=150, y=50)
polyline.click(on_line_click)
ap.save_overall_html(dest_dir_path="graphics_move_to_and_line_to_polyline/")
If you click the following line, line style will be updated:
move_to API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface signature] move_to(self, *, x: Union[float, apysc._type.number.Number], y: Union[float, apysc._type.number.Number], variable_name_suffix: str = '') -> '_polyline.Polyline'
[Interface summary]
Move a line position to a specified point.
[Parameters]
x
: float or NumberX destination point to move.
y
: float or NumberY destination point to move.
variable_name_suffix
: str, default “”A JavaScript variable name suffix string. This setting is sometimes useful for JavaScript debugging.
[Returns]
line
: PolylineLine graphics instance.
[Examples]
>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> sprite: ap.Sprite = ap.Sprite()
>>> sprite.graphics.line_style(color=ap.Color("#fff"), thickness=5)
>>> line_1: ap.Polyline = sprite.graphics.move_to(x=50, y=50)
>>> line_2: ap.Polyline = sprite.graphics.line_to(x=150, y=50)
>>> line_1 == line_2
True
>>> line_1.line_color
Color("#ffffff")
>>> line_1.line_thickness
Int(5)
line_to API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface signature] line_to(self, *, x: Union[float, apysc._type.number.Number], y: Union[float, apysc._type.number.Number], variable_name_suffix: str = '') -> '_polyline.Polyline'
[Interface summary]
Draw a line from previous point to specified point (initial point is x = 0, y = 0).
[Parameters]
x
: float or NumberX destination point to draw a line.
y
: float or NumberY destination point to draw a line.
variable_name_suffix
: str, default “”A JavaScript variable name suffix string. This setting is sometimes useful for JavaScript debugging.
[Returns]
line
: PolylineLine graphics instance.
[Examples]
>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> sprite: ap.Sprite = ap.Sprite()
>>> sprite.graphics.line_style(color=ap.Color("#fff"), thickness=5)
>>> line_1: ap.Polyline = sprite.graphics.move_to(x=50, y=50)
>>> line_2: ap.Polyline = sprite.graphics.line_to(x=150, y=50)
>>> line_3: ap.Polyline = sprite.graphics.line_to(x=50, y=150)
>>> line_1 == line_2 == line_3
True
>>> line_1.line_color
Color("#ffffff")
>>> line_1.line_thickness
Int(5)