0

Lua (Codea) で「ズーム トゥ フィット」アルゴリズムを構築しようとしています。キャンバス上の任意の形状を想像してください。この形状の中心を自動的にズームして、キャンバスの大部分を占め、中心に配置したいと考えています。最後に、最初の状況にズームアウトできるようにしたいので、マトリックスがその仕事をするはずです。これを行う簡単な方法はありますか?Lua 以外のコードでも構いません。

4

1 に答える 1

1

C# では、

double aspectRatio = shape.Width / shape.Height;

if (aspectRatio > 1)
{
    // Width defines the layout
    double origShapeWidth = shape.Width;
    shape.Width = panel.Width;
    shape.Height = panel.Width * shape.Height / origShapeWidth;

    // Center the shape
    double margin = (panel.Height - shape.Height) / 2;
    shape.Margin = new Thickness(0, margin, 0, margin);
}
else
{
    // Height defines the layout
    double origShapeHeight = shape.Height;
    shape.Height = panel.Height;
    shape.Width = panel.Height * shape.Width / origShapeHeight;

    // Center the shape
    double margin = (panel.Width - shape.Width) / 2;
    shape.Margin = new Thickness(margin, 0, margin, 0);
}
于 2013-08-04T23:30:06.843 に答える