Partilhar via


Como dimensionar um objeto

Este tópico descreve como dimensionar um objeto usando a classeMatrix3x2F. Dimensionar um objeto significa torná-lo maior ou menor. Você pode chamar um dos dois métodos a seguir para dimensionar um objeto.

  • Matrix3x2F::Scale(D2D1_SIZE_F scalefactor, D2D1_POINT_2F centerpoint)
  • Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)

O primeiro método armazena scalex e scaley como um par ordenado de valores de ponto flutuante na estrutura D2D1_SIZE_F. O segundo método define scalex e scaley como parâmetros individuais.

Independentemente do método que utilize, deve-se especificar tanto o fator de escalonamento em x quanto o fator de escalonamento em y . O valor scalex é o fator de escala na direção do eixo x. Por exemplo, um valor de scalex de 1.5 estende o objeto a 150 por cento ao longo do eixo x. Da mesma forma, o valor escalável é o fator de escala na direção y. Por exemplo, um valor de escala de 0,5 reduz a altura do objeto em 50 por cento ao longo do eixo y.

Para especificar um ponto como o centro da operação de dimensionamento, use o parâmetro centerpoint. Por padrão, um objeto é centralizado em torno de sua origem (0,0).

O código de exemplo a seguir cria uma transformação de escala para aumentar o tamanho de um quadrado para 130% de seu tamanho original. O ponto central está definido como sendo o canto superior esquerdo do quadrado original.

    // Create a rectangle.
    D2D1_RECT_F rectangle = D2D1::Rect(438.0f, 80.5f, 498.0f, 140.5f);

    // Draw the outline of the rectangle.
    m_pRenderTarget->DrawRectangle(
        rectangle,
        m_pOriginalShapeBrush,
        1.0f,
        m_pStrokeStyleDash
        );

    // Apply the scale transform to the render target.
    m_pRenderTarget->SetTransform(
        D2D1::Matrix3x2F::Scale(
            D2D1::Size(1.3f, 1.3f),
            D2D1::Point2F(438.0f, 80.5f))
        );

    // Paint the rectangle's interior.
    m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);

    // Draw the outline of the rectangle.
    m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);

A ilustração a seguir mostra o efeito da aplicação da transformação de escala ao quadrado. O quadrado original é um contorno pontilhado e o quadrado escalonado é um contorno sólido.

ilustração do quadrado redimensionado para 130% do seu tamanho original

Visão geral das transformações Direct2D

Referência Direct2D