Sobrepor E Mover Imagem, (marca d´água)!

08/11/2005

0

Salve galera, alguem ai sabe como eu posso fazer isso!?!? tipo tenho que criar uma função pra sobrepor uma imagem a outra.. pra fazer tipo marca d´água, so que eu tava pensado em fazer assim, um image pra mim selecionar a posição do logo e ele colocaria essa imagem sobre as outras imagens de uma pasta, na mesma posição q ta no image... so que eu não to conseguindo fazer ele ´colar´ esse logo sobre essas imagens... alguem ai tem alguma ideia pra me ajudar??! e sobre a questão de posicionamento? tem como arrastar com o mouse a imagem dentro de um Image?! valeu galera... vo ficar no aguardo!

Valeu galera!


Bastard2003

Bastard2003

Responder

Posts

09/11/2005

Marcio.theis

E aew rapa.... blz... Onde vc pode pegar um exemplo para lhe servir de base é em: C:\Arquivos de programas\Borland\Delphi6\Demos\Doc\Graphex da sua máquina, o delphi 6 traz este exemplo, o que ele faz é colocar uma imagem sobre a outra usando a opção de copiar e colar do programinha, na opção de Colar vc podera ver que vc pode passar a posição desejada de onde quer que fique a marca, desta forma vc pode fazer uma função que pega o tamanho da imagem e calcula a melhor posição para colocar a figura... Qualquer coisa é só falar...


Responder

09/11/2005

Bastard2003

Valeu cara.. não tava conseguindo resolver esse problema.. mas tipo... ele so abre BMP ne?! se passar uma função tornando JPGE ou GIF ele deve funcionar ne?!!
outra coisa... eu to usando um ScrollBox pra poder mover o TImage dentro dele pra posicionar a imagem a onde eu quero que ela apareça na nova figura, colocando uma global eu posso passar esse valor pra função que tem naquele exemplo ne!?
Value mesmo cara...
abraços
Sucesso!

:D


Responder

09/11/2005

Marcio.theis

No caso naquele exemplo vc somente pode manipular imagens do tipo BMP, mas vc pode usar as lib do componente ´GifImage´ para manipular as imagens e colocar no formato que vc desejar. Em relação a segunda pergunta, vc pode sim criar um variável global para ser informao a posição que deseja que seja colocado a nova figura, bastando apenas depois alterar a posição que deve-se passar para que cole uma sobre a outra... Outra coisa que vc poderia fazer é criar tudo de forma dinâmica, pois vc pode usar isto para colocar em um monte de figuras, ou seja, vc tem uma pasta de fotos com um monte de foto, e no seu aplicativo vc apenas iria dizer a posição que quer que fique a nova figura por cima da outra, podendo assim somente mostrar para o usuário a figura que esta sendo alterado, não necessitando que ele faça uma de cada vez....


Responder

09/11/2005

Bastard2003

boa!! valeu a dica.. mas tipo... tava pensando no seguinte... criar dinamico é uma boa... torna mais leve... mas como eu vou fazer pra criar um componente dentro de outro?! é que tipo, vou criar um ScrollBox e dentro dele colocar o TImage pra ele ficar ali dentro, no caso esse ScrollBox vai ta com as duas barras, pro TImge poder ser AutoSize... outra coisa.. não querendo abusar ja... mas como eu faria pra poder mover a imagem qnd o mouse tiver precionado?!! tava pensando em algo do tipo: no on mouseDown o seto a posição da imagem (left/Top) sendo a posição do mouse (GetCursorPos) so que eu não me recordo qual o formato do resultado dessa função ali... não lembro se ele retorna um inteiro ou um ponteiro!
:D
Valeu a ajuda de novo!
Sucesso!


Responder

09/11/2005

Marcio.theis

Cria um projeto e adiciona apenas um botão no form, faça o seguinte:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, JPeg, Menus;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure MouseParaBaixo(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MouseMexer(Sender: TObject; Shift: TShiftState; X,Y: Integer);
    procedure MouseParaCima(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    MouseDownSpot: TPoint;
    Capturing: bool;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
    image: TImage;
    scrool: TScrollBox;
begin
scrool:=TScrollBox.Create(Application);
scrool.Parent:=Self;
scrool.Name:=´scroll´;
scrool.DoubleBuffered:=True;
scrool.AutoSize:=True;

image:=TImage.Create(Application);
image.Parent:=scrool;
image.Name:=´image´;
image.AutoSize:=True;
image.Picture.LoadFromFile(´C:\imagem1.jpg´);

image:=TImage.Create(Application);
image.Parent:=scrool;
image.Name:=´image2´;
image.AutoSize:=True;
image.OnMouseUp:=MouseParaCima;
image.OnMouseDown:=MouseParaBaixo;
image.OnMouseMove:=MouseMexer;
image.Picture.LoadFromFile(´C:\imagem2.jpg´);
end;

procedure TForm1.MouseMexer(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
    begin
    (Sender as TImage).Left:=(Sender as TImage).Left -(MouseDownSpot.x-x);
    (Sender as TImage).Top:=(Sender as TImage).Top - (MouseDownSpot.y-y);
    end;
end;

procedure TForm1.MouseParaBaixo(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
    begin
    ReleaseCapture;
    Capturing:=false;
    (Sender as TImage).Left:=(Sender as TImage).Left - (MouseDownSpot.x -x);
    (Sender as TImage).Top:=(Sender as TImage).Top - (MouseDownSpot.y - y);
    end;
end;

procedure TForm1.MouseParaCima(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ssCtrl in Shift then
    begin
    SetCaptureControl((Sender as TImage));
    Capturing:=True;
    MouseDownSpot.X:=x;
    MouseDownSpot.Y:=Y;
    end;
end;

end.


Neste caso ele ira fazer ´acredito´ o que vc deseja, para mover a imagem2, basta que vc segure o Ctrl e clique sobre a imagem e comece a mover....


Responder

09/11/2005

Bastard2003

Valeu cara... era exatamente isso que eu tava tentando fazer!! abraço!
Valeu mesmo!


Responder

12/04/2013

Harrisson

e pra salvar essa imagem com a "marca dagua" ? salvar como bmp ou jpg
como que faz?
quando coloco image.picture.salvetofile(caminho) ele salva a ultima imagem que coloquei (que no caso coloco 4 imagens sobre um fundo definido pelo usuario).

No image ele mostra normalmente as 4 sobre o fundo, mas eu preciso salva - la, em jgp ou em bmp. Alguem tem alguma idéia?


Obrigado!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar