Trucos Dibujar rectángulos en 3D con el API (DrawEdge)

La función DrawEdge del API no permite dibujar rectángulos, cuadrados, líneas horizontales, verticales y diagonales en tres dimensiones.
Se adjunta un ejemplo en VB 5.0 que sirve para ver el resultado de las diferentes combinaciones de parámetros que se le pueden pasar a la función (incluye la definición de la función y las constantes necesarias para Visual Basic).

La definición de la función es :

La función DrawEdge dibuja uno o más lados de un rectángulo.

BOOL DrawEdge(

    HDC hdc, // handle a un device context
    LPRECT qrc, // puntero a las coordenadas del rectángulo
    UINT edge, // tipo de lado interno y externo a dibujar
    UINT grfFlags // tipo de borde
   );
Parámetros

hdc

Identifica el device context.

qrc

Puntero a una estructura RECT que contiene las coordenadas lógicas del rectángulo.

edge

Especifica el tipo de borde interior y exterior a dibujar. Este parámetro debe ser una combinación de un borde interno y un borde externo.
Los bordes internos son :

BDR_RAISEDINNER    Raised inner edge.
BDR_SUNKENINNER    Sunken inner edge.

Los bordes externos son :

BDR_RAISEDOUTER    Raised outer edge.
BDR_SUNKENOUTER    Sunken outer edge.

Alternativamente, el parámetro edge puede especificar uno de los siguientes flags :

EDGE_BUMP    Combinación de BDR_RAISEDOUTER y BDR_SUNKENINNER.
EDGE_ETCHED    Combinación de BDR_SUNKENOUTER y BDR_RAISEDINNER.
EDGE_RAISED    Combinación de BDR_RAISEDOUTER y BDR_RAISEDINNER.
EDGE_SUNKEN    Combinación de BDR_SUNKENOUTER y BDR_SUNKENINNER.


grfFlags

Especifica el tipo de borde. Este parámetro puede ser una combinación de los valores :

BF_ADJUST    El rectangulo se ajusta para dejar espacio al área cliente.
BF_BOTTOM    Borde inferior del rectángulo.
BF_BOTTOMLEFT    Lados izquierdo e inferior del rectángulo.
BF_BOTTOMRIGHT    Lados inferior y derecho del rectángulo.
BF_DIAGONAL    Diagonal.
BF_DIAGONAL_ENDBOTTOMLEFT    Diagonal. El punto final es la esquina inferior izquierda del rectángulo; el origen es la esquina superior derecha.
BF_DIAGONAL_ENDBOTTOMRIGHT    Diagonal. El final es la esquina inferior derecha del rectángulo; el origen es la esquina superior izquierda.
BF_DIAGONAL_ENDTOPLEFT    Diagonal. El final es la esquina superior izquierda del rectángulo; el origen es la esquina inferior derecha.
BF_DIAGONAL_ENDTOPRIGHT    Diagonal. El punto final es la esquina superior derecha del rectángulo; el origen es la esquina inferior izquierda.
BF_FLAT     Borde plano.
BF_LEFT     Lado izquierdo del rectángulo.
BF_MIDDLE    El interior del rectángulo se rellenará con el color de los botones.
BF_MONO     Borde de una dimensión.
BF_RECT     Rectángulo completo
BF_RIGHT    Lado derecho del rectángulo.
BF_SOFT     Soft buttons en vez de tiles. (?)
BF_TOP     Borde superior del rectángulo.
BF_TOPLEFT    Lados superior e izquierdo del rectángulo.
BF_TOPRIGHT    Lados superior y derecho del rectángulo.


Valores de retorno

Si la función falla devuelve FALSE, en caso contrario devuelve TRUE. Para obtener más información sobre el error podremos emplear la función GetLastError.

Y como la traducción de esto es penosa y no se entiende nada (prometo que tampoco se entendía mucho en inglés) lo mejor es que probeis con el ejemplo que acompaño.

Download drawedge.zip  



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com