Ver Mensaje Individual
  #4  
Antiguo 16-02-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
La otra opción es emplear el método Scanline(). Con éste método se consigue un acceso más rápido que con Pixels[]. El problema es que requiere un poquito más de código.

Cuando llamas a ScanLine() debes indicar la "fila" sobre la cual deseas evaluar.
Luego, debes posicionarte sobre la "columna" de dicha fila.
ScanLine() regresa la dirección de memoria donde comienza la j-ésima fila, por lo que se necesita un puntero para almacenar el valor, luego es posible moverse de a 3 posiciones y de este modo conseguir ir pixel a pixel.

Básicamente lo que se hace es posicionarse en el pixel [i,j] en dos pasos:
1. Ir a la fila j-ésima.
2. Interar i veces, 3 lugares sobre la fila j-ésima.

Lo bueno de este método es que se consigue leer los valores RGB de un pixel, y te evitas tener que estar realizando conversión de TColor a RGB.

Si buscas sobre ScanLine encontrarás hilos con ejemplos de uso.

OJO: esto aplica a bitmaps.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita