Ver Mensaje Individual
  #3  
Antiguo 07-04-2009
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Reputación: 18
LoPiTaL Va por buen camino
Gracias por la rápida respuesta. Sí, tienes razón en lo de que se están pisando, por eso había dicho que las fotos laterales se mostraban bien, pero la inferior (que se pinta sobre el slider) provoca la reentrada.
El código que utilizo es relativamente simple. Lo que hago (olvidándonos de las imágenes laterales) es:
-Calculo los pixeles de la imágen inferior, reduciendo el brillo de cada uno de ellos en función a una máscara previamente almacenada en memoria.
-Calculo la altura a la que debe estar la imágen (siempre pegada a la palanca del slider).
-Llamo al método Update de la imágen.
-Llamo a inherited.

El código (simplificado) es el siguiente:

Código:
  //Para la sombra de abajo....
  topIm:=topIm+fHandlerBitmap.Height; //Cálculo de la altura (topIm 
                                                   //inicializada cuando las otras sombras)
  //Aplicación de la máscara de la sombra y cambio de brillo pixel a pixel:
  temp.Assign(backBottomImage.Picture.Bitmap);
  temp.Width:=backBottomImage.Width;
  temp.Height:=backBottomImage.Height;
  for i := 0 to temp.Height -1 do begin
    DestRow := fBackGroundBitmap.ScanLine[i+topIm];
    for j := 0 to temp.Width - 1 do begin
      colorRGB:=(DestRow[J].rgbtBlue shl 16)+(DestRow[J].rgbtGreen shl 8)+DestRow[J].rgbtRed;
      temp.Canvas.Pixels[j,i]:=cambiaBrilloPixel(colorRGB,fShadeBitmap.Canvas.Pixels[J,I+topIm],RGBF_BGR);
    end;
  end;
  backBottomImage.Picture.Bitmap.Assign(temp);
  backBottomImage.Top:=topIm+Self.Top+1;

    temp.Free;
  
    //Indico que la imagen a cambiado
    backBottomImage.Update;
    inherited Paint;   //Llamo al método superior
Toda ayuda se agradece,
Un saludo,
Rubén
Responder Con Cita