Condividi tramite


Come ridimensionare un oggetto

In questo argomento viene descritto come ridimensionare un oggetto usando la classeMatrix3x2F. Per ridimensionare un oggetto significa rendere l'oggetto più grande o più piccolo. È possibile chiamare uno dei due metodi seguenti per ridimensionare un oggetto .

  • Matrix3x2F::Scale(D2D1_SIZE_F fattoreDiScala, D2D1_POINT_2F puntoDiCentro)
  • Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F punto_centrale)

Il primo metodo archivia scalex e scaley come coppia ordinata di valori a virgola mobile nella struttura D2D1_SIZE_F. Il secondo metodo definisce scalex e scaley come singoli parametri.

Indipendentemente dal metodo usato, è necessario specificare sia il fattore scalex che il fattore scaley. Il valore scalex è il fattore di scala nella direzione x. Ad esempio, un valore scalex pari a 1,5 estende l'oggetto al 150% lungo l'asse x. Analogamente, il valore di scala è il fattore di scala nella direzione y indicato da. Ad esempio, un valore di scala pari a 0,5 riduce l'altezza dell'oggetto del 50% sull'asse y.

Per specificare un punto come centro dell'operazione di ridimensionamento, usare il parametro centerpoint. Per impostazione predefinita, un oggetto è centrato sull'origine (0,0).

Il codice di esempio seguente crea una trasformazione della scala per aumentare le dimensioni di un quadrato a 130% delle dimensioni originali. Il centerpoint è impostato come angolo superiore sinistro del quadrato originale.

    // 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);

La figura seguente mostra l'effetto dell'applicazione della trasformazione della scala al quadrato. Il quadrato originale è un contorno punteggiato e il quadrato ridimensionato è un contorno solido.

illustrazione del quadrato ridimensionato a 130% delle dimensioni originali

Panoramica delle trasformazioni Direct2D

Riferimento Direct2D