Manipulador de Bitmaps en C++ Builder
Ahora Presentamos una forma practica de manipulación de un Bitmap desde código fuente, no necesita de API, aquí te daremos una perspectiva para trabajar con BMPs y comprender su estructura.
Ahora bien.. como se aprecia en la parte superior, de este modo puedes manipular un Bitmap que se ha cargado en un Control TImage pero la maravilla radica en que se manipula Byte a Byte, el contenido de la Matriz de Puntos, se lee una linea, que posteriormente se modificara en el destino, cambiando la ubicación de los Bytes, el Red por Green, Blue por Green, entre otras, en un próximo programa les enseñaremos como manipular un Bitmap desde Nativo C/C++ 3.1 de Borland. ahora puedes guiarte con este código fuente :
- Code: Seleccionar todo
- void TDlgMain::fncInvertirImagen( int Cual )
- {
- //make sure both images are in 24bit pixel format
- ImgProDemo->Picture->Bitmap->PixelFormat=pf24bit;
- ImgProSale->Picture->Bitmap->PixelFormat=pf24bit;
- //copy the source pixels to the destination bitmap
- for (int row1=0;row1<ImgProDemo->Height;row1++)
- {
- BYTE* rowPtr1=(BYTE*)ImgProDemo->Picture->Bitmap->ScanLine[row1];
- for (int col1=0;col1<ImgProDemo->Width;col1++)
- {
- //get pointer to the current pixel in the source image
- BYTE* pixelPtr1 = rowPtr1-col1*3;
- //get pointer to the current pixel in the destination image
- BYTE* rowPtr2 = (BYTE*)ImgProSale->Picture->Bitmap->ScanLine[row1];
- BYTE* pixelPtr2 = rowPtr2 - col1*3+ImgProSale->Width*3;
- // Here change the position at pixels
- if( Cual==0 )
- {
- pixelPtr2[0]=pixelPtr1[ 1 ];
- pixelPtr2[1]=pixelPtr1[ 2 ];
- pixelPtr2[2]=pixelPtr1[ 0 ];
- }
- }
- }
Archivos Adjuntos
- ImageMngr_Src.zip112.52 KiB
Código fuente del proyecto - ImageMngr_Exe.zip311.43 KiB
Proyecto Compilado (.exe)
Otros Artículos en esta sección
-
En ese proyecto usaremos el control TTimer, que está en la paleta System, le asignaremos unos milisegundos para que invoque una función y simulará la animación.No importa realmente en que se desarrolle si Delphi o C++ Builder a las finales el resultado no varian entre ellos, pero nos servira para aprender un poco mas acerca de los Sockets y el protocolo TCP/IP que es con el que trabajan las clases TClientSocket¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deProgramación »