Share via


Método Matrix::TransformVectors(Point*,INT) (gdiplusmatrix.h)

El método Matrix::TransformVectors multiplica cada vector de una matriz por esta matriz. Los elementos de conversión de esta matriz (tercera fila) se omiten. Cada vector se trata como una matriz de filas. La multiplicación se realiza con la matriz de filas de la izquierda y esta matriz a la derecha.

Sintaxis

Status TransformVectors(
  [in, out] Point *pts,
  [in]      INT   count
);

Parámetros

[in, out] pts

Tipo: Punto*

Puntero a una matriz de objetos Point que, en la entrada, contiene los vectores que se van a transformar y, en la salida, recibe los vectores transformados. Cada vector de la matriz se transforma (multiplica por esta matriz) y se actualiza con el resultado de la transformación.

[in] count

Tipo: INT

Opcional. Entero que especifica el número de vectores que se van a transformar. El valor predeterminado es 1.

Valor devuelto

Tipo: Estado

Si el método se realiza correctamente, devuelve Ok, que es un elemento de la enumeración Status .

Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .

Comentarios

Mientras que un punto representa la posición, un vector representa una entidad (por ejemplo, velocidad o aceleración) que tiene una dirección y una magnitud. Por lo tanto, los extremos de un segmento de línea son puntos, pero su diferencia es un vector: la longitud y la dirección de ese segmento de línea.

Los vectores son similares a los puntos de muchas maneras. Al igual que los puntos, se representan mediante coordenadas x e y, por lo que GDI+ usa las mismas clases (Point y PointF) para representar vectores que usa para representar puntos. La diferencia sutil entre vectores y puntos es la forma en que se ven afectadas por las transformaciones. En el mundo físico, mover el origen del sistema de coordenadas cambia las coordenadas de todos los puntos de posición, pero no modificará ningún vector de velocidad. Los vectores se pueden escalar, girar, cortar o voltear, pero no traducirse (movidos). Por lo tanto, cuando se aplica una transformación afín a un vector, se omite el componente de traducción (la última fila de la matriz).

Ejemplos

En el ejemplo siguiente se crea un vector y un punto. La punta del vector y el punto están en la misma ubicación: (100, 50). El código crea un objeto Matrix e inicializa sus elementos para que represente un giro en el sentido de las agujas del reloj seguido de una traducción de 100 unidades a la derecha. El código llama al método Matrix::TransformPoints de la matriz para transformar el punto y llama al método Matrix::TransformVectors de la matriz para transformar el vector. Toda la transformación (rotación seguida de traducción) se realiza en el punto, pero solo se realiza la parte de rotación de la transformación en el vector. El método Matrix::TransformVectors omite los elementos de la matriz que representan la traducción.

VOID Example_TransVectors(HDC hdc)
{
   Graphics graphics(hdc);

   Pen pen(Color(255, 0, 0, 255), 7);
   pen.SetEndCap(LineCapArrowAnchor);
   SolidBrush brush(Color(255, 0, 0, 255));

   // A point and a vector, same representation but different behavior
   Point point(100, 50);
   Point vector(100, 50);

   // Draw the original point and vector in blue.
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);

   graphics.DrawLine(&pen, Point(0, 0), vector);

   // Transform.
   Matrix matrix(0.8f, 0.6f, -0.6f, 0.8f, 100.0f, 0.0f);
   matrix.TransformPoints(&point);
   matrix.TransformVectors(&vector);

   // Draw the transformed point and vector in red.
   pen.SetColor(Color(255, 255, 0, 0));
   brush.SetColor(Color(255, 255, 0, 0));
   graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);
   graphics.DrawLine(&pen, Point(0, 0), vector); 
}

Requisitos

   
Cliente mínimo compatible Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusmatrix.h (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Transformaciones globales y locales

Matriz

Representación matricial de transformaciones

Point

Métodos TransformPoints

Métodos TransformVectors

Transformaciones