Cara Menskalakan Objek

Topik ini menjelaskan cara menskalakan objek dengan menggunakan kelas Matrix3x2F . Untuk menskalakan objek berarti membuat objek lebih besar atau lebih kecil. Anda dapat memanggil salah satu dari dua metode berikut untuk menskalakan objek.

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

Metode pertama menyimpan scalex dan scaley sebagai pasangan nilai floating-point yang diurutkan dalam struktur D2D1_SIZE_F . Metode kedua mendefinisikan scalex dan scaley sebagai parameter individual.

Terlepas dari metode mana yang Anda gunakan, Anda harus menentukan faktor scalex dan scaley . Nilai scalex adalah faktor skala ke arah x. Misalnya, nilai scalex 1,5 membentangkan objek hingga 150 persen di sepanjang sumbu x. Demikian pula, nilai berskala adalah faktor skala ke arah y. Misalnya, nilai berskala 0,5 menyusutkan tinggi objek sebesar 50 persen di sepanjang sumbu y.

Untuk menentukan titik sebagai pusat operasi penskalaan, gunakan parameter titik tengah . Secara default, objek berpusat pada asalnya (0,0).

Contoh kode berikut membuat transformasi skala untuk meningkatkan ukuran persegi menjadi 130% dari ukuran aslinya. Titik tengah diatur menjadi sudut kiri atas persegi asli.

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

Ilustrasi berikut menunjukkan efek menerapkan transformasi skala ke kuadrat. Persegi asli adalah kerangka putus-putus dan persegi berskala adalah kerangka yang solid.

ilustrasi ukuran persegi menjadi 130% dari ukuran aslinya

Gambaran Umum Transformasi Direct2D

Referensi Direct2D