Metodo GraphicsPath::Warp (gdipluspath.h)
Il metodo GraphicsPath::Warp applica una trasformazione warp a questo percorso. Il metodo GraphicsPath::Warp esegue anche l'appiattizione (converte in una sequenza di linee rette) il percorso.
Sintassi
Status Warp(
[in] const PointF *destPoints,
[in] INT count,
[in, ref] const RectF & srcRect,
[in] const Matrix *matrix,
[in] WarpMode warpMode,
[in] REAL flatness
);
Parametri
[in] destPoints
Tipo: const PointF*
Puntatore a una matrice di punti che, insieme al parametro srcRect , definisce la trasformazione di distorsione.
[in] count
Tipo: INT
Intero che specifica il numero di punti nella matrice destPoints . Il valore di questo parametro deve essere 3 o 4.
[in, ref] srcRect
Tipo: const RectF
Riferimento a un rettangolo che, insieme al parametro destPoints , definisce la trasformazione di distorsione.
[in] matrix
facoltativo. Puntatore a un oggetto Matrix che rappresenta una trasformazione da applicare insieme alla distorsione. Se questo parametro è NULL, non viene applicata alcuna trasformazione. Il valore predefinito è NULL.
[in] warpMode
Tipo: WarpMode
facoltativo. Elemento dell'enumerazione WarpMode che specifica il tipo di distorsione da applicare. Il valore predefinito è WarpModePerspective.
[in] flatness
Tipo: REAL
facoltativo. Numero reale che influenza il numero di segmenti di linea utilizzati per approssimare il percorso originale. I valori piccoli specificano che vengono usati molti segmenti di linea e i valori di grandi dimensioni specificano che vengono usati pochi segmenti di riga. Il valore predefinito è FlatnessDefault, che è una costante definita in Gdiplusenums.h.
Valore restituito
Tipo: Stato
Se il metodo ha esito positivo, restituisce Ok, che è un elemento dell'enumerazione Status .
Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .
Commenti
Un oggetto GraphicsPath archivia una raccolta di punti dati che rappresentano linee e curve. Il metodo GraphicsPath::Warp converte i punti dati in modo che rappresentino solo le righe. Il parametro flatness influisce sul numero di righe archiviate. I punti dati originali che rappresentano le curve vengono persi.
Se il parametro count ha un valore pari a 4, la trasformazione warp viene definita come illustrato nella tabella seguente.
Punto di origine | Punto di destinazione |
---|---|
Angolo superiore sinistro di srcRect | destPoints[0] |
Angolo superiore destro di srcRect | destPoints[1] |
Angolo inferiore sinistro di srcRect | destPoints[2] |
Angolo inferiore destro di srcRect | destPoints[3] |
Una trasformazione specificata da un rettangolo di origine e quattro punti di destinazione è in grado di eseguire il mapping di un rettangolo a un quadrilatero arbitrario che non è necessariamente un parallelogramma.
Se il parametro count ha un valore pari a 3, la trasformazione warp viene definita come illustrato nella tabella seguente.
Punto di origine | Punto di destinazione |
---|---|
Angolo superiore sinistro di srcRect | destPoints[0] |
Angolo superiore destro di srcRect | destPoints[1] |
Angolo inferiore sinistro di srcRect | destPoints[2] |
Una trasformazione specificata da un rettangolo di origine e tre punti di destinazione esegue il mapping dei rettangoli ai parallelgrammi.
Esempio
Nell'esempio seguente viene creato un oggetto GraphicsPath e viene aggiunta una figura chiusa al percorso. Il codice definisce una trasformazione di distorsione specificando un rettangolo di origine e una matrice di quattro punti di destinazione. Il rettangolo di origine e i punti di destinazione vengono passati al metodo Warp . Il codice disegna il percorso due volte: una volta prima che sia stato sottoposto a distorsione e una volta dopo che è stato sottoposto a distorsione.
VOID WarpExample(HDC hdc)
{
Graphics graphics(hdc);
// Create a path.
PointF points[] ={
PointF(20.0f, 60.0f),
PointF(30.0f, 90.0f),
PointF(15.0f, 110.0f),
PointF(15.0f, 145.0f),
PointF(55.0f, 145.0f),
PointF(55.0f, 110.0f),
PointF(40.0f, 90.0f),
PointF(50.0f, 60.0f)};
GraphicsPath path;
path.AddLines(points, 8);
path.CloseFigure();
// Draw the path before applying a warp transformation.
Pen bluePen(Color(255, 0, 0, 255));
graphics.DrawPath(&bluePen, &path);
// Define a warp transformation, and warp the path.
RectF srcRect(10.0f, 50.0f, 50.0f, 100.0f);
PointF destPts[] = {
PointF(220.0f, 10.0f),
PointF(280.0f, 10.0f),
PointF(100.0f, 150.0f),
PointF(400.0f, 150.0f)};
path.Warp(destPts, 4, srcRect);
// Draw the warped path.
graphics.DrawPath(&bluePen, &path);
// Draw the source rectangle and the destination polygon.
Pen blackPen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&blackPen, srcRect);
graphics.DrawLine(&blackPen, destPts[0], destPts[1]);
graphics.DrawLine(&blackPen, destPts[0], destPts[2]);
graphics.DrawLine(&blackPen, destPts[1], destPts[3]);
graphics.DrawLine(&blackPen, destPts[2], destPts[3]);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP, Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | gdipluspath.h (include Gdiplus.h) |
Libreria | Gdiplus.lib |
DLL | Gdiplus.dll |
Vedi anche
Costruzione e creazione di percorsi