ImageShape の処理

既定では、ImageShapeは、回転の変換を無視します。イメージの回転は、高品質のレンダリングが要求されるグラフィック変換です。高品質のレンダリングがサポートされるプラットフォームでは、既定のレンダリング モードです。レンダリング モードに関する詳細は、RenderingModeを、回転したイメージのレンダリングに関する詳細は、2D 変換を参照してください。ImageShapeを回転させる為には、ImageShape.fixed-transformation?プロパティをfalseに設定する必要があります。
以下のサンプルは、RectangleShape とそれを含むImageShapeを回転させます。
次の行をコメント アウトし、例を実行すると、イメージは親の四角形と一緒に回転しなくなります。
fixed-transformation? = false,
高品質のレンダリングを使用しない場合、ImageShape は回転しますが、イメージは正確にレンダリングされません。代わりに、均一色(イメージのピクセルの平均色)のシェイプとしてレンダリングされます。

例: ImageShape のレンダリング
{import * from CURL.GUI.SHAPES}

{value
    let start:DateTime = {DateTime}
    let img:ImageShape =
        {ImageShape
            fixed-transformation? = false,
            {Pixmap.from-url
                {url "../../default/images/curllogo.gif"}
            }
        }
    let rect:RectangleShape = 
        {RectangleShape
            {GRect 1cm, 1cm, 1.25cm, 1.25cm},
            color = FillPattern.aqua,
            translation = {Distance2d 3cm, 3cm},
            img
        }
    let tmr:Timer =
        {rect.animate
            frequency=30fps, || 30 frames per second
            repeat = 0,
            {on TimerEvent do
                let elapsed:Time = {start.elapsed}
                {rect.set-rotation elapsed * (20deg / 1s)}
            }
        }
    let run-button:CommandButton =
        {CommandButton label = "Start",
            {on Action do
                set start = {DateTime}
                set tmr.repeat = 500
            }
        }
    let stop-button:CommandButton =
        {CommandButton label = "Stop",
            {on Action do
                set tmr.repeat = 0
            }
        }
    let can:Canvas = 
        {Canvas
            width = 6cm,
            height = 6cm,
            border-width = 1px,
            rect
        }
    {HBox
        spacing = .125cm,
        valign = "top",
        {VBox
            spacing = .125cm,
            run-button,
            stop-button
        },
        can
    }
}