Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Funcion Espejo a un archivo BMP

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Funcion Espejo a un archivo BMP Responder citando

Estoy haciendo un editor de fotos, pero no he podido implementar la funcion espejo al archivo BMP abierto, la forma mas simple que exista de hacerlo. Usando canvas tal vez podria pero no se como, si alguien me pudiera dar una mano, gracias. Razz Razz
Volver arriba
Mensaje    Asunto: Responder citando

Se me ocurre algo así:

Código:

char *ptr;
char *linea=new char[3*Image1->Picture->Bitmap->Width];
for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
   {
   ptr =(char *)Image1->Picture->Bitmap->ScanLine[y];
   for (int x = 0; x < 3*Image1->Picture->Bitmap->Width; x=x+3)
   {
      linea[x]=ptr[3*Image1->Picture->Bitmap->Width-x-3];
      linea[x+1]=ptr[3*Image1->Picture->Bitmap->Width-x-2];
      linea[x+2]=ptr[3*Image1->Picture->Bitmap->Width-x-1];
   }
   for (int x = 0; x < 3*Image1->Picture->Bitmap->Width; x++)
   {
      ptr[x]=linea[x];
   }
}


No es muy eficiente pero funciona, espero haberte ayudado.
Saludos
Volver arriba
Mensaje    Asunto: Responder citando

Quizás te sirva la siguiente función:
Código:
//---Añadimos: #include<algorithm>

void ReflejaBmp(Graphics::TBitmap* bmp)
{
    // Ponemos el bitmap en modo RGBTriple para trabajar más fácil
    bmp->PixelFormat = pf24bit;

    // Intercambiamos los pixels por las dos puntas en cada línea
    for (int y = 0; y < bmp->Height; y++)
    {
        RGBTRIPLE* pPixel = static_cast<RGBTRIPLE*>(bmp->ScanLine[y]);
        for (int x = 0; x < bmp->Width/2; x++)
        {
            std::swap(pPixel[x], pPixel[bmp->Width - x - 1]);
        }
    }
}

Un ejemplo de como usarla:
Código:
ReflejaBmp(Image1->Picture->Bitmap);
Image1->Refresh();
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Abusando tu sabidurioa y alguna forma para dejar en "tonos de grises" una imagen que este en un dbimage (para simular que esta deshabilitado)
Gracias de antemano
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Tendrías que crear un nuevo componente desde el TDBImage sobrescribiendo su método virtual "Paint", ya que lo que supongo que quieres es que los cambios solo afecten visualmente y no a la base de datos como ocurriría si cambias la imagen de manera normal.

Y una forma sencilla de convertir un bitmap a tonos de gris:
Código:
void ColorToGray(Graphics::TBitmap* bmp)
{
    bmp->PixelFormat = pf24bit;

    for (int y = 0; y < bmp->Height; y++)
    {
        RGBTRIPLE* pixel = static_cast<RGBTRIPLE*>(bmp->ScanLine[y]);
        for (int x = 0; x < bmp->Width; x++, pixel++)
        {
            pixel->rgbtRed = pixel->rgbtGreen = pixel->rgbtBlue =
                (pixel->rgbtRed + pixel->rgbtGreen + pixel->rgbtBlue) / 3;
        }
    }
}

Ejemplo de uso:
Código:
ColorToGray(Image1->Picture->Bitmap);
Image1->Refresh();
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Estimado _Leo, como hacer una transicion de imagenes, tipo protector de pantalla sobre windows..

este codigo puede servir ?, o existe alguna otra manera, como el CombineRgn

saludos
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.