Compartir a través de


estructura DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

La estructura DXGK_GDIARG_ALPHABLEND describe las características de una operación de combinación alfa acelerada por hardware GDI.

Sintaxis

typedef struct _DXGK_GDIARG_ALPHABLEND {
  [in] RECT    SrcRect;
  [in] RECT    DstRect;
  [in] UINT    SrcAllocationIndex;
  [in] UINT    DstAllocationIndex;
  [in] UINT    NumSubRects;
  [in] RECT    *pSubRects;
  [in] BYTE    SourceConstantAlpha;
  [in] BOOLEAN SourceHasAlpha;
  [in] UINT    SrcPitch;
} DXGK_GDIARG_ALPHABLEND;

Miembros

[in] SrcRect

Estructura RECT que define el área rectangular que se va a copiar. Este rectángulo de origen se especifica en el sistema de coordenadas de la superficie de origen y se define mediante dos puntos: superior izquierda e inferior derecha. Los dos puntos que definen el rectángulo siempre están bien ordenados. Este rectángulo nunca superará los límites de la superficie de origen, por lo que nunca volvía la superficie de origen. Este rectángulo se asigna al rectángulo de destino definido por DstRect. Vea Comentarios para obtener más información.

[in] DstRect

Estructura RECT que define el área rectangular que se va a modificar. Este rectángulo se especifica en el sistema de coordenadas de la superficie de destino y se define mediante dos puntos: superior izquierda e inferior derecha. El rectángulo es exclusivo de la parte inferior derecha; es decir, sus bordes inferior y derecho no forman parte de la transferencia de bloques de bits. Los dos puntos que definen el rectángulo siempre están bien ordenados.

El rectángulo de destino definido por DstRect puede superar los límites de la superficie de destino, pero los subctángulos no. Además, se garantiza que todos los subctángulos se ajusten dentro de la superficie de destino. Los subctángulos se pueden restringir aún más mediante un rectángulo delimitador que sea menor que el rectángulo de destino.

[in] SrcAllocationIndex

Índice del elemento de la lista de asignación que especifica la asignación a la que hace referencia el rectángulo de origen SrcRect .

[in] DstAllocationIndex

Índice del elemento de la lista de asignación que especifica la asignación a la que hace referencia el rectángulo de destino DstRect .

[in] NumSubRects

Número de subrectángulos en el espacio de superficie de destino que está limitado por el rectángulo de destino DstRect .

[in] pSubRects

Puntero a los subctángulos del espacio de superficie de destino.

[in] SourceConstantAlpha

Factor de mezcla constante que se va a aplicar a toda la superficie de origen. Este valor está en el intervalo de [0,255], donde 0 es completamente transparente y 255 es completamente opaco.

[in] SourceHasAlpha

Define si se supone que la superficie tiene un canal alfa. Si es TRUE, se supone que la superficie tiene un canal alfa; de lo contrario, el valor es FALSE.

[in] SrcPitch

El tono de la superficie de origen, en bytes.

Comentarios

Si se requiere una operación de transferencia de bloque de bits extendido (bitblt), las relaciones de ajuste x e y se calculan respectivamente como las relaciones de los tamaños x e y de los miembros DstRect y SrcRect , y la operación stretch continuará como si se establece el valor COLORONCOLOR en *Wingdi.h. En una transferencia de bloque de bits de reducción, se deben omitir suficientes píxeles para que no sea necesario combinar píxeles. En una transferencia de bloques de bits de extensión, se deben replicar píxeles.

Cuando los subrectángulos se transforman en el espacio de superficie de origen, se garantiza que el resultado está dentro de la superficie de origen. La transformación de las coordenadas de un sub rectángulo en la superficie de destino para las coordenadas de la superficie de origen se define mediante las siguientes fórmulas, donde:

  • (Xd, Yd) es un punto dentro del sub rectángulo.
  • (Xs, Ys) es un punto dentro del rectángulo de origen.
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)

// OR

int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)

float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)

//OR

int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)</code></pre>

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7
Encabezado d3dkmddi.h (incluya D3dkmddi.h)

Consulte también

RECT