Ver la Versión Completa : Guardad Canvas De Un Image Con La propiedad stretch:=true
gulder
28-11-2008, 07:32:23
Hola Foro Como andan espero que bien, bueno estoy tratando de guardar el canvas de un Timage que tiene la propiedad stretch:=true en una imagen lo hago de la siguiente forma:
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := Image1.Width;
Bitmap.Height := Image1.Height;
Bitmap.Canvas.Draw(0,0,Image1.Picture.Graphic);
Bitmap.SaveToFile('logula.bmp');
end;
Nota: este es el tamaño original de la imagen antes de ser cargado en el Timage
http://img.tomatone.net/big/120px-Nuvola_apps_kcmkwm.png
en mi form tengo la imagen y el boton ojo el tamaño de la imagen no es el original recuerden que la imagen tiene la propiedad stretch:=true y por ende la estira al tamaño del Timage
http://img.tomatone.net/big/lopoliiiii.PNG
y al ejecutar dicho codigo me lo guarda de la siguiente forma
http://img.tomatone.net/big/logulaffffffffffff.PNG
yo quiero que me lo guarde tal cual se ve en el Timage saludos y espero que me entiendan lo que quiero
escafandra
28-11-2008, 08:20:28
Trata de mirar si esto (http://www.clubdelphi.com/foros/showpost.php?p=292172&postcount=11) te ayuda. Esta en C++ pero es fácil de portar a delphi.
Saludos.
Neftali [Germán.Estévez]
28-11-2008, 11:16:07
No se si es lo mismo, pero esto debería funcionar.
procedure TForm1.Button3Click(Sender: TObject);
var
ORect, Drect: TRect;
Bitmap: TBitmap;
begin
ORect := Image1.Picture.Bitmap.Canvas.ClipRect;
DRect := Image1.ClientRect;
// Copia
Bitmap := TBitmap.Create;
Bitmap.Width := Image1.Width;
Bitmap.Height := Image1.Height;
Bitmap.Canvas.CopyRect(DRect,
Image1.Picture.Bitmap.Canvas,
ORect);
Bitmap.SaveToFile('.\logula2.bmp');
Bitmap.Free;
end;
gulder
28-11-2008, 14:26:47
hola foristas como amanecen bueno primero Neftali el ejemplo que me pone me arroja lo siguiente solo una imagen en blanco no se que puede estar pasando
http://img.tomatone.net/big/logula2.PNG
y por otro lado escafandra gracias por responder no he podido pasar ese codigo a delphi saludos
seoane
28-11-2008, 14:32:26
¿la imagen es bmp o jpg?
gulder
28-11-2008, 14:48:46
hola seoane como andas la imagen es PNG pero igual la converti a jpg y la cargue y sale lo mismo saludos
escafandra
28-11-2008, 15:31:20
Prueba a ver si esto te sirve, es la traducción mas o menos de aquello (http://www.clubdelphi.com/foros/showpost.php?p=292172&postcount=11):
procedure TForm1.Button1Click(Sender: TObject);
var
R: TRect;
Image: TImage;
begin
Image := TImage.Create(Self);
// Aquí dimensionamos la nueva imagen....
Image.Height := 100;
Image.Width := 100;
// Preparamos para la función StretchDraw
R.Left := 0;
R.Top := 0;
R.Bottom := Image.Height;
R.Right := Image.Width;
// Copiamos la imagen cambiada de tamaño a Image desde Image1...
// Image1 esta definida en tiempo de diseño....
Image.Canvas.StretchDraw(R, Image1.Picture.Graphic);
// La salvamos para ver que ha pasado. ....EURECA....
Image.Picture.Graphic.SaveToFile('a.bmp');
end;
Saludos.
Neftali [Germán.Estévez]
28-11-2008, 16:15:02
hola igual la converti a jpg y la cargue y sale lo mismo
Ese código funciona con Bitmaps (tal y como lo estabas guardando); Para jpg tal vez haya que convertirlo antes.
Si quieres que delphi reconozca bmp, jpg, png, tiff, etc, te aconsejo la biblioteca de funciones GraphicEx, sólo añades el "uses GraphicEx" y ya puedes leer muchos tipos de imágenes.
Saludos
gulder
28-11-2008, 16:26:03
escafandra hola como estas espero que bien lo logre pero modificando esto
// Aquí dimensionamos la nueva imagen....
Image.Height := 100;
Image.Width := 100;
// Aquí dimensionamos la nueva imagen....
Image.Height := Image1.Height;
Image.Width := Image1.Width;
asi quedo entonce saludos
procedure TForm1.Button1Click(Sender: TObject);
var
R: TRect;
Image: TImage;
begin
Image := TImage.Create(Self);
// Aquí dimensionamos la nueva imagen....
Image.Height := Image1.Height;
Image.Width := Image1.Width;
// Preparamos para la función StretchDraw
R.Left := 0;
R.Top := 0;
R.Bottom := Image.Height;
R.Right := Image.Width;
// Copiamos la imagen cambiada de tamaño a Image desde Image1...
// Image1 esta definida en tiempo de diseño....
Image.Canvas.StretchDraw(R, Image1.Picture.Graphic);
// La salvamos para ver que ha pasado. ....EURECA....
Image.Picture.Graphic.SaveToFile('a.bmp');
end;
saludos y gracias a clubdelphi chauuu
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.