※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。
Graphics クラス¶
このページではGraphics
クラスについて説明します。
Graphics クラスの概要¶
Graphics
クラスは各ベクターグラフィックスの描画のインターフェイスを扱うクラスです。このインターフェイスには四角の描画や線の描画など様々なインターフェイスが存在します。
Sprite
クラスなどのインスタンスはこのGraphics
クラスのインスタンスを内部で生成します。
Sprite のインスタンスを経由した各インターフェイスの呼び出し¶
Sprite のインスタンスはgraphics
属性を持っており、その属性を使用して各描画のインターフェイスを呼び出すことができます。
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=250,
stage_height=180,
stage_elem_id="stage",
)
sprite: ap.Sprite = ap.Sprite()
# Draw the white border and cyan color rectangle.
sprite.graphics.line_style(color=ap.Color("#fff"), thickness=5)
sprite.graphics.begin_fill(color=ap.Color("#0af"))
sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
# Draw the magenta color polyline.
sprite.graphics.begin_fill(color=ap.COLORLESS)
sprite.graphics.line_style(color=ap.Color("#f0a"), thickness=5)
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)
# Draw the dashed line.
sprite.graphics.draw_dashed_line(
x_start=50, y_start=130, x_end=200, y_end=130, dash_size=10, space_size=5
)
ap.save_overall_html(dest_dir_path="graphics_call_interfaces_from_sprite_instance/")
各返却値について¶
各インターフェイスはRectangle
やPolyline
クラスなどの生成されたグラフィックスのインスタンスを返却します。これらのインスタンスはxやy、fill_alpha、visibleなどの基本的なDisplayObject
クラスの各属性やメソッドなどを持っています。
例えば以下のコード例のようにこれらのインスタンスに対してイベントを設定して座標の更新処理などを設定することができます:
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()
def on_rectangle_click(e: ap.MouseEvent[ap.Rectangle], options: dict) -> None:
"""
The handler that the rectangle calls when clicked.
Parameters
----------
e : MouseEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
rectangle: ap.Rectangle = e.this
# Update the coordinates, fill alpha, and fill color.
rectangle.x = ap.Number(100)
rectangle.y = ap.Number(100)
rectangle.fill_alpha = ap.Number(0.5)
rectangle.fill_color = ap.Color("#f0a")
# drew_rect interface will return Rectangle instance.
sprite.graphics.begin_fill(color=ap.Color("#0af"))
rectangle: ap.Rectangle = sprite.graphics.draw_rect(x=50, y=50, width=50, height=50)
# Bind click event to the rectangle.
rectangle.click(on_rectangle_click)
ap.save_overall_html(dest_dir_path="graphics_return_values/")
もし以下の四角をクリックすると座標値や塗りの色、透明度などの値が更新されます。