Programación Específica > DirectX

 Color De Mascara

<< < (3/3)

JuanK:
:(
Me disponia optimistamente a colocar mi post con lo que habia logfrado reducir el codigo.. y me encuentro con el post... de ruben muy bien si funciono y a la perfección
Este es el mio ;'(

--- Código: Text ---    public UInt16 ConvierteA16Bit(Int32 color)        {      byte azul, verde, rojo;       azul = (byte)( color & 0x000000FF);      verde= (byte)((color & 0x0000FF00)&#62;&#62;8);      rojo = (byte)((color & 0x00FF0000)&#62;&#62;16);            return (ushort)((rojo &#62;&#62; 3 &#60;&#60; 11)|(verde &#62;&#62; 2 &#60;&#60; 5)|(azul &#62;&#62; 3));       
funiona pero se queda corto en comparacioj con el tuyo.

Lo estudiare a ver que puedo aprender.

Gracias ruben.

JuanK:
Finalmente quedo asi:

Codigo en las clases de actores:
fu necesario hacer varias adecuadiones porque todo estaba muy bien hasta cuando estableci windows  a 16 bit..
ahi todo fallo porque cuando se esta en modo ventana prima la recolucion del sistema operativo, no siendo asi cuando se esta en pantalla completa,
por lo cual tuve que determinar cada caso por separado.

Cuando se esta en pantalla completa se debe realizar conversion del color de 16 bit solo si el Device de directx esta en color de 16 bit sin importar la profundidad de color del sistema,
Cuando se esta en modo ventana se debe realizar la conversion de color a 16 bit solo si la resolcuon del Sistema es de 16 bit , sin importar el modo de Device de directX.

--- Código: Text ---       if(gc.EstadoVideo ==EnEstadoVideo.PantallaCompleta)      {        // Determinar la profundidad del color para pantalla completa        if(gc.ProfColor == 16 )        {          // Si es de 16 bit se debe hacer conversion de colores          ck.ColorSpaceLowValue = gc.ConvierteA16Bit(ccb);          ck.ColorSpaceHighValue = gc.ConvierteA16Bit(cca);        }        else        {          ck.ColorSpaceLowValue = ccb;          ck.ColorSpaceHighValue = cca;        }      }      else      {        // Determinar la profundidad del color para modo ventana         if(gc.disGrafico.DisplayMode.PixelFormatStructure.RgbBitCount == 16 )        {          // Si es de 16 bit se debe hacer conversion de colores          ck.ColorSpaceLowValue = gc.ConvierteA16Bit(ccb);          ck.ColorSpaceHighValue = gc.ConvierteA16Bit(cca);        }        else        {          ck.ColorSpaceLowValue = ccb;          ck.ColorSpaceHighValue = cca;        }      }  
Codigo en la clase grafica

--- Código: Text ---      public UInt16 ConvierteA16Bit(Int32 color)        {      return (ushort) ( ( ((color &#62;&#62; 8) & 0xF800) | ((color &#62;&#62; 5) & 0x07E0) | (color &#62;&#62; 3) ) & 0x00FFFF);    } 

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa