Ver Mensaje Individual
  #11  
Antiguo 02-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Cita:
Empezado por juanchi
Hola.
Para pasar un pixel a hexa utilizo la sentencia:

Valor:= Canvas.Pixels[5,5] and $FF;

Ahora tengo el valor en hexa, ¿cómo puedo hacer el proceso inverso?


Saludos.
hola juanchi, no comentas si al final conseguiste realizar el histograma, supongo que si. En cuanto a lo que preguntas ahora, vamos por partes. Cuando dices que tienes su valor en hexa ¿a que te refieres?, la instrucción que mencionas solamente sirve para seleccionar el byte mas bajo del color, pero no cambia la naturaleza de la variable que en ambos casos es un integer.

Si lo que quieres es volver a recuperar el color gris correspondiente a ese valor solo tenemos que añadir los otros dos bytes, pero como sabemos que en el caso de los grises los tres bytes son iguales esta operación es sencilla:

Código Delphi [-]
var
  Color: TColor;
begin
  // Se puede hacer asi
  Color:= RGB(Valor,Valor,Valor);
  // e incluso asi
  Color:= (Valor shl 16) + (Valor shl 8) + Valor;
end;
Responder Con Cita