Como dimensionar um objeto

Este tópico descreve como dimensionar um objeto usando a classe Matrix3x2F . Dimensionar um objeto significa tornar o objeto 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 usado, você deve especificar fatores scalex e scaley . O valor scalex é o fator de escala na direção x. Por exemplo, um valor scalex de 1,5 estende o objeto para 150% ao longo do eixo x. Da mesma forma, o valor scaley é o fator de escala na direção y. Por exemplo, um valor dimensionado de 0,5 reduz a altura do objeto em 50% 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 sobre 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 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 dimensionado é um contorno sólido.

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

Visão geral das transformações de Direct2D

Referência de Direct2D