Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2014, 06:06
Radm
 
Fecha de Ingreso: noviembre-2014
Ubicación: Venezuela
Mensajes: 7
Antigüedad: 10 años
Puntos: 0
Pregunta Error de posición y tamaño al unir bitmaps con canvas.drawBitmap

Buenas A todos y de ante mano gracias, Espero estén bien escribo pues estoy haciendo unw app, sencilla que debe unir mas de dos bitmap en uno solo, el problema esta en que la posición de los bitmap y el tamaño de los secundarios esta mal, y la verdad no le encuentro la vuelta pues la lógica me dice que esta bien, de hecho es un código que tengo ya en c# y lo pase a java ,obviamente es diferente sin embargo tienen el mismo principio.

me gustaría saber si tienen la forma de hacer que la posición y el tamaño de dichas imágenes salgan tal como se les esta diciendo en el código ,

adjunto código e imágenes de como se ve y como salen con el código que ya tengo en C#


CODIGO JAVA

Paint mPaint;

Bitmap image1=BitmapUtils.decodeBase64(Lie.GeFondo().GetI magen());
Bitmap image2=BitmapUtils.decodeBase64(Utilidades.getImag enTomadabase64());
Bitmap image3=BitmapUtils.decodeBase64(Lie.GetBanner().Ge tImagen());
Bitmap result = Bitmap.createBitmap(image1.getWidth(), image1.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Rect srcRect = new Rect(0, 0, image1.getWidth(), image1.getHeight());
Rect dstRect = new Rect(srcRect);
Rect srcRect1 = new Rect( Foto.GetPosicionDeItems().Getx(),Foto.GetPosicionD eItems().Gety(),Foto.GetTamano().GetWidth(), Foto.GetTamano().GeHeight());
Rect srcRect3 = new Rect( Lie.GetBanner().GetPosicionDeItems().Getx(), Lie.GetBanner().GetPosicionDeItems().Gety() ,Lie.GetBanner().GetTamano().GetWidth(), Lie.GetBanner().GetTamano().GeHeight());


Rect srcRect2 = new Rect(0,0,image2.getWidth(), image2.getHeight());
Rect srcRect4 = new Rect(0,0,image3.getWidth(), image3.getHeight());

dstRect.offset(0, 0);
canvas.drawBitmap(image1, srcRect, dstRect, null);
dstRect.offset(image1.getWidth(), 0);
srcRect1.offset(0, 0);
canvas.drawBitmap(image2,srcRect2 ,srcRect1 , null);

srcRect1.offset(image2.getWidth(), 0);
srcRect3.offset(0, 0);
canvas.drawBitmap(image3,srcRect4 ,srcRect3 , null);
srcRect3.offset(image3.getWidth(), 0);
myImage = (ImageView) findViewById(R.id.imageView);
myImage.setImageBitmap(result);

Image Generada en Java




El codigo en c# es este

Es diferente pro el for pero a la final es lo mismo


System.Drawing.Bitmap Bac = (System.Drawing.Bitmap)Lienzo.Fondo.Imagen;
System.Drawing.Graphics r = System.Drawing.Graphics.FromImage(Bac);

if (Lienzo.Fotos != null)
{
if (Lienzo.Fotos.Count > 0)
{
int i = 0;
foreach (RADMLIB.Items item in Lienzo.Fotos)
{

System.Drawing.Bitmap img = (System.Drawing.Bitmap)Lista[i];
r.DrawImage(img, item.PosicionDeItems.X, item.PosicionDeItems.Y, item.Tamano.Width, item.Tamano.Height);
i++;
}
}
}
if (Lienzo.Banner != null)
{
r.DrawImage((System.Drawing.Bitmap)Lienzo.Banner.I magen, Lienzo.Banner.PosicionDeItems.X, Lienzo.Banner.PosicionDeItems.Y, Lienzo.Banner.Tamano.Width, Lienzo.Banner.Tamano.Height);
}

return Bac;


Imagen Generado con c#