Cita:
Empezado por JesusG
seoane dice que poner una marca de agua es falcil en una .bmp, y que despues dicha marca no aparezca en ejecucion, ¿podriais darme una pista de como hacerlo?.
|
Para marcar la imagen dibujaremos sobre la ella una marca, utilizando el metodo XOR. Para eliminarla solo tenemos que volver a dibujar sobre la imagen la misma marca utilizando el otra vez metodo XOR, y como es bien sabido (a xor b) xor b = a
Código Delphi
[-]
procedure Marcar(Bitmap: TBitmap; Texto: String);
var
Marca: TBitmap;
i,j: Integer;
begin
Marca:= TBitmap.Create;
try
Marca.Canvas.Brush.Color:= clBlack;
Marca.Canvas.Font.Name:= 'Arial';
Marca.Canvas.Font.Size:= 72;
Marca.Canvas.Font.Color:= clWhite;
Marca.Canvas.Font.Style:= [fsBold, fsItalic];
Marca.Width:= Marca.Canvas.TextWidth(Texto);
Marca.Height:= Marca.Canvas.TextHeight(Texto);
Marca.Canvas.TextOut(0,0,Texto);
i:= (Bitmap.Width - Marca.Width) div 2;
j:= (Bitmap.Height - Marca.Height) div 2;
Bitblt(Bitmap.Canvas.Handle,i,j,Marca.Width,Marca.Height,
Marca.Canvas.Handle, 0, 0, SRCINVERT);
finally
Marca.Free;
end;
end;
procedure MarcarArchivo(Origen, Destino: string; Texto: String);
var
Bitmap: TBitmap;
begin
Bitmap:= TBitmap.Create;
with Bitmap do
try
LoadFromFile(Origen);
Marcar(Bitmap,Texto);
SaveTofile(Destino);
finally
Free;
end;
end;
MarcarArchivo('d:\1.bmp','d:\2.bmp','Marca');
var
Bitmap: TBitmap;
begin
Bitmap:= TBitmap.Create;
with Bitmap do
try
LoadFromFile('d:\2.bmp');
Marcar(Bitmap,'Marca');
Image1.Picture.Assign(Bitmap);
finally
Free;
end;
end;