ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
Forum membership is Free!  Click Join to sign-up
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 Watermark problem
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

apresa

Spain
5 Posts

Posted - Jan 02 2018 :  08:05:20  Show Profile  Reply
Hi all:

I try with this code but show error:

there is not enough space on disk

Of course, I have free space...


procedure TForm1.Watermark1Click(Sender: TObject);
var
  iLayer: integer;
  sHeight, sWidth:integer;

begin

  if OpenPictureDialog1.Execute then
  begin
    //first logo
    iLayer := ImageEnView1.LayersAdd(ielkImage);
    ImageEnView1.IO.LoadFromFile(OpenPictureDialog1.FileName);
    sWidth := ImageEnView1.Layers[ilayer].Width div 10;
    sHeight := ImageEnView1.Layers[ilayer].Height div 10;
    // center logo position
    ImageEnView1.Proc.Resample(sWidth, sHeight, rfLanczos3, True);
    ImageEnView1.Layers[ilayer].PosX := IELayer_Pos_HCenter;
    ImageEnView1.Layers[ilayer].PosY := IELayer_Pos_VCenter;
    ImageEnView1.Layers[ilayer].Transparency := 40; // (0-255)


     //second logo
    iLayer := ImageEnView1.LayersAdd(ielkImage);
    ImageEnView1.IO.LoadFromFile(OpenPictureDialog1.FileName);
    // change position logo
    ImageEnView1.Proc.Resample(sWidth, sHeight, rfLanczos3, True);
    ImageEnView1.Layers[ilayer].PosX := IELayer_Pos_HCenter ;
    ImageEnView1.Layers[ilayer].PosY := IELayer_Pos_VCenter div 3;
    ImageEnView1.Layers[ilayer].Transparency := 40; // (0-255)
    ImageEnView1.LayersMergeall;

    ImageEnView1.Update;

  end;
end;


TIA

Alfonso

w2m

USA
1990 Posts

Posted - Jan 02 2018 :  09:20:37  Show Profile  Reply
IELayer_Pos_VCenter is a const that must not be modified. Modify PosY to change the layers position instead of IELayer_Pos_VCenter div 3.

procedure TForm1.WaterMark1Click(Sender: TObject);
var
  iLayer: integer;
  sHeight, sWidth: integer;
begin
  if OpenPictureDialog1.Execute then
  begin
    // first logo
    iLayer := ImageEnView1.LayersAdd(ielkImage);
    ImageEnView1.LayersCurrent := iLayer;
    ImageEnView1.IO.LoadFromFile(OpenPictureDialog1.FileName);
    sWidth := ImageEnView1.Layers[iLayer].Width;
    sHeight := ImageEnView1.Layers[iLayer].Height;
    // center logo position
    ImageEnView1.Proc.Resample(sWidth, sHeight, rfLanczos3, True);
    ImageEnView1.Layers[iLayer].PosX := IELayer_Pos_HCenter;
    ImageEnView1.Layers[iLayer].PosY := IELayer_Pos_VCenter;
    ImageEnView1.Layers[iLayer].Transparency := 40; // (0-255)
    // second logo
    iLayer := ImageEnView1.LayersAdd(ielkImage);
    ImageEnView1.LayersCurrent := iLayer;
    ImageEnView1.IO.LoadFromFile(OpenPictureDialog1.FileName);
    // change position logo
    ImageEnView1.Proc.Resample(sWidth, sHeight, rfLanczos3, True);
    ImageEnView1.Layers[iLayer].PosX := IELayer_Pos_HCenter;
    ImageEnView1.Layers[iLayer].PosY := IELayer_Pos_VCenter;
    {ImageEnView1.Layers[ilayer].PosY := IELayer_Pos_VCenter div 3; INCORRECT}
    ImageEnView1.Layers[iLayer].PosY := ImageEnView1.Layers[iLayer].PosY div 3;
    ImageEnView1.Layers[iLayer].Transparency := 40; // (0-255)
    ImageEnView1.LayersMergeAll(True);
    ImageEnView1.Update;
  end;
end;

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
Jump To: