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
 copying/pasting bitmap
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

pierrotsc

USA
499 Posts

Posted - Sep 15 2014 :  16:40:22  Show Profile  Reply
if i re-size a bitmap, copy it and paste it, it will paste with its original loaded dimensions. anyway to have it pasted with the new re-sized dimensions?
Thanks.
Pierre

w2m

USA
1990 Posts

Posted - Sep 15 2014 :  16:51:16  Show Profile  Reply
No it does not... it pastes the resampled or resized image. Show some of your code.

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

pierrotsc

USA
499 Posts

Posted - Sep 15 2014 :  17:54:02  Show Profile  Reply
Copy: ImageEnVect.Proc.SelCopyToClip();
Paste : ImageEnVect.Proc.SelPasteFromClip(true, true);

Thanks
Pierre
Go to Top of Page

xequte

39053 Posts

Posted - Sep 15 2014 :  22:50:46  Show Profile  Reply
Hi Pierre

What method are you using to resize the image? Just zoomed it onscreen?

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

pierrotsc

USA
499 Posts

Posted - Sep 16 2014 :  06:15:20  Show Profile  Reply
i click on the layer, then i see the grips. I just pick a grip and re-size it.
Pierre
Go to Top of Page

w2m

USA
1990 Posts

Posted - Sep 16 2014 :  06:34:46  Show Profile  Reply
Try calling TImageEnView.LayersFixRotations if you rotate a layer with the mouse or call TImageEnView.LayersFixSizes if you resize a layer with the mouse before the paste.

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

pierrotsc

USA
499 Posts

Posted - Sep 16 2014 :  06:43:24  Show Profile  Reply
Tried it and it did not work.
Thanks for the advice though.
Pierre
Go to Top of Page

w2m

USA
1990 Posts

Posted - Sep 16 2014 :  10:33:37  Show Profile  Reply
It does work.

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.Buttons, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ExtDlgs,
  ieview, imageenview, imageen, ievect;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Open1: TButton;
    AddLayer1: TButton;
    Rotate1: TSpeedButton;
    SelectLayers1: TSpeedButton;
    Copy1: TButton;
    Paste1: TButton;
    Clear1: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Zoom1: TSpeedButton;
    ImageEnVect1: TImageEnVect;
    ImageEnVect2: TImageEnVect;
    DeleteLayer1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure SelectLayers1Click(Sender: TObject);
    procedure Rotate1Click(Sender: TObject);
    procedure Zoom1Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure AddLayer1Click(Sender: TObject);
    procedure Copy1Click(Sender: TObject);
    procedure Paste1Click(Sender: TObject);
    procedure Clear1Click(Sender: TObject);
    procedure DeleteLayer1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses imageenio, imageenproc, hyiedefs, hyieutils, iexHelperFunctions;

{$R *.dfm}

procedure TForm1.AddLayer1Click(Sender: TObject);
var
  iLayer: integer;
  iWidth: integer;
  iHeight: integer;
begin
  iLayer := ImageEnVect1.LayersAdd;
  iWidth := ImageEnVect1.IEBitmap.Width;
  iHeight := ImageEnVect1.IEBitmap.Height;
  { Render a transparent layer }
  ImageEnVect1.Layers[ilayer].Bitmap.IEInitialize(iWidth, iHeight, clBlack, True);
  ImageEnVect1.Update;
  ImageEnVect1.Gestures.Pan.Enabled := False;
  ImageEnVect1.Gestures.Zoom.Enabled := False;
  ImageEnVect1.Gestures.LayerRotate.Enabled := False;
  ImageEnVect1.Gestures.LayerMove.Enabled := False;
  ImageEnVect1.MouseInteract := [miMoveLayers, miResizeLayers];
  SelectLayers1.Down := True;
end;

procedure TForm1.Clear1Click(Sender: TObject);
begin
  ImageEnVect1.Clear;
  ImageEnVect1.LayersClear;
  ImageEnVect2.Clear;
  ImageEnVect2.LayersClear;
end;

procedure TForm1.Copy1Click(Sender: TObject);
begin
  ImageEnVect1.LayersFixRotations(ImageEnVect1.LayersCurrent);
  ImageEnVect1.LayersFixSizes(ImageEnVect1.LayersCurrent);
  ImageEnVect1.LayersFixBorders(ImageEnVect1.LayersCurrent);
  ImageEnVect1.Proc.SelCopyToClip();
end;

procedure TForm1.DeleteLayer1Click(Sender: TObject);
begin
  ImageEnVect1.LayersRemove(ImageEnVect1.LayersCurrent);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IERegisterFormats;
  OpenPictureDialog1.Filter := GraphicFilter(TGraphic);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  IEUnregisterFormats;
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
  begin
    ImageEnVect1.IO.LoadFromFile(OpenPictureDialog1.FileName);
  end;
end;

procedure TForm1.Paste1Click(Sender: TObject);
var
  iLayer: integer;
begin
  ImageEnVect2.Clear;
  ImageEnVect2.LayersClear;
  ImageEnVect2.Proc.SelPasteFromClip(True, True);
  iLayer := ImageEnVect1.LayersAdd;
  ImageEnVect1.Layers[ImageEnVect1.LayersCurrent].PosX := 100;
  ImageEnVect1.Layers[ImageEnVect1.LayersCurrent].PosY := 100;
  ImageEnVect1.Proc.SelPasteFromClip(True, True);
end;

procedure TForm1.Rotate1Click(Sender: TObject);
begin
  ImageEnVect1.Gestures.Pan.Enabled := False;
  ImageEnVect1.Gestures.Zoom.Enabled := False;
  ImageEnVect1.Gestures.LayerRotate.Enabled := True;
  ImageEnVect1.Gestures.LayerMove.Enabled := False;
  ImageEnVect1.MouseInteract := [miRotateLayers];
end;

procedure TForm1.SelectLayers1Click(Sender: TObject);
begin
  ImageEnVect1.Gestures.Pan.Enabled := False;
  ImageEnVect1.Gestures.Zoom.Enabled := False;
  ImageEnVect1.Gestures.LayerRotate.Enabled := False;
  ImageEnVect1.Gestures.LayerMove.Enabled := True;
  ImageEnVect1.MouseInteract := [miMoveLayers, miResizeLayers];
end;

procedure TForm1.Zoom1Click(Sender: TObject);
begin
  ImageEnVect1.Gestures.Pan.Enabled := True;
  ImageEnVect1.Gestures.Zoom.Enabled := True;
  ImageEnVect1.Gestures.LayerRotate.Enabled := False;
  ImageEnVect1.Gestures.LayerMove.Enabled := False;
  ImageEnVect1.MouseInteract := [miScroll, miZoom];
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

pierrotsc

USA
499 Posts

Posted - Sep 16 2014 :  10:59:21  Show Profile  Reply
Let me load your code and try it then.
Thank you
Pierre
Go to Top of Page

pierrotsc

USA
499 Posts

Posted - Sep 16 2014 :  11:40:00  Show Profile  Reply
Bill, thanks. I was putting the command in the paste section. Not in the copy/cut section. Everything works perfectly now.
Thanks.
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
Jump To: