Масштабирование объекта
В этом разделе описывается масштабирование объекта с помощью класса Matrix3x2F. Масштабирование объекта означает увеличение или уменьшение его размера. Для масштабирования объекта можно вызвать один из следующих двух методов.
- Matrix3x2F::Масштабирование(D2D1_SIZE_F коэффициентмасштаба, D2D1_POINT_2F точкацентра)
- Matrix3x2F::Scale(float scalex, float scaley, D2D1_POINT_2F centerpoint)
Первый метод сохраняет scalex и scaley как упорядоченную пару чисел с плавающей запятой в структуре D2D1_SIZE_F. Второй метод определяет scalex и scaley как отдельные параметры.
Независимо от того, какой метод вы используете, необходимо указать как факторы scalex, так и scaley. Масштаб по x — это коэффициент. Например, значение scalex 1,5 растягивает объект на 150 процентов вдоль оси x. Аналогичным образом, величина , отвечающая за шкалирование, является коэффициентом масштабирования в направлении y. Например, значение масштабирования 0,5 уменьшает высоту объекта на 50 процентов вдоль оси y.
Чтобы указать точку в качестве центра операции масштабирования, используйте параметр центр. По умолчанию объект находится в центре своего происхождения (0,0).
В следующем примере кода создается преобразование масштабирования для увеличения размера квадрата до 130% исходного размера. центровая точка имеет верхний левый угол исходного квадрата.
// 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);
На следующем рисунке показан эффект применения преобразования масштабирования к квадрату. Исходный квадрат — это точечная структура, а масштабируемый квадрат — сплошная структура.
Связанные разделы