Ver Mensaje Individual
  #4  
Antiguo 15-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Fabián.
Cita:
Empezado por FabianSiza Ver Mensaje
Muchas gracias me a servido mucho, podrías decirme como hago para poder darle ubicaciones a las imágenes?, es decir quedan las dos en una sola pero en desorden como podría hacer que una quede en cierta parte y con cierto tamaño? gracias.
Código Delphi [-]
...
implementation 

type
  TImgClass = class
  private
    Fimg: TImage;
    Fpos: TPoint;
  public
    constructor Create(aImg: TImage; const X,Y: Integer);
    destructor Destroy;
    property Image: TImage read Fimg write Fimg;
    property Posic: TPoint read FPos write FPos;
  end;

{ TImgRec }
constructor TImgClass.Create(aImg: TImage; const X,Y: Integer);
begin
  inherited Create;
  Fimg:= TImage.Create(nil);
  Fimg.Picture.Assign(aImg.Picture);
  FPos:= Point(X,Y);
end;

destructor TImgClass.Destroy;
begin
  Fimg.Free;
  inherited Destroy;
end;

{ TForm1 }
type
  TVecImgClass = array of TImgClass;

procedure CollageImage(vImg: TVecImgClass; Target: TImage);
var
  bmp: TBitmap;
  grp: TGraphic;
  i  : Integer;
begin
  bmp:= TBitmap.Create;
  try
    bmp.Height:= 0;
    bmp.Width := 0;
    for i:= Low(vImg) to High(vImg) do
    begin
      grp:= vImg[i].Image.Picture.Graphic;
      if vImg[i].Posic.Y+grp.Width > bmp.Width then
        bmp.Width:= vImg[i].Posic.Y+grp.Width + bmp.Width;
      if vImg[i].Posic.X+grp.Height > bmp.Height then
        bmp.Height:= vImg[i].Posic.X + grp.Height;
      bmp.Canvas.Draw(vImg[i].Posic.X, vImg[i].Posic.Y, grp);
      Target.Picture.Bitmap.Assign(bmp);
    end;
  finally
    bmp.Free;
  end;
end;

// Ejemplo de uso:
procedure TForm1.btnCollageClick(Sender: TObject);
var
  vImg: TVecImgClass;
  i: Integer;
begin
  SetLength(vImg, 4);
  vImg[0]:= TImgClass.Create(Image1, 0, 0);
  vImg[1]:= TImgClass.Create(Image2, 5, 135);
  vImg[2]:= TImgClass.Create(Image3, 150, 0);
  vImg[3]:= TImgClass.Create(Image4, 200, 150);
  CollageImage(vImg, Image5);
  for i:= 3 downto 0  do vImg[i].Destroy;
  Image5.Stretch:= True;
  Finalize(vImg);
end;

Muestra:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita