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
 Displaying Vector in imageenMview
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

pierrotsc

USA
499 Posts

Posted - Apr 20 2016 :  09:40:10  Show Profile  Reply
How would I display vector objects in imageenMview?
right now, when I add a box to a layer, it does not show up in my layers?

Hope I am making sense.
Pierre

pierrotsc

USA
499 Posts

Posted - Apr 20 2016 :  10:29:22  Show Profile  Reply
Hold on. I may have found a demo that may help me. Will update the thread if not.
Go to Top of Page

pierrotsc

USA
499 Posts

Posted - Apr 20 2016 :  10:45:47  Show Profile  Reply
Nope, the demo was not with vectors. Any help coding. This is what I am using but it does not show vectors.

  LayerView.CenterSelected;
  // update ImageEnMView1 with the contents of ImageEnView1
  LayerView.Clear;
  for i := 0 to ImageEnVect.LayersCount - 1 do
  begin
    idx := LayerView.AppendImage;
    LayerView.SetIEBitmap(idx, ImageEnVect.layers[i].Bitmap);
    if i = 0 then
      LayerView.ImageTopText[0].Caption := 'Background'
    else
      LayerView.ImageTopText[i].Caption :=
        string(ImageEnVect.layers[ImageEnVect.LayersCurrent].Name);
  end;
  LayerView.SelectedImage := ImageEnVect.LayersCurrent;
  LayerView.Update;
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 20 2016 :  14:49:50  Show Profile  Reply
I did not take the time to make a demo with layers, but here is how you can draw the vectorial objects on TImageEnMView.

ImageEnMView/ImageEnVect Demo:
attach/w2m/2016420144829_ImageEnMViewImageEnVect.zip
63.43 KB

Tomorrow I'll try adding layers.

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 - Apr 20 2016 :  15:00:06  Show Profile  Reply
Thank you. I will work on that at the same time. Appreciate it.
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 20 2016 :  15:41:01  Show Profile  Reply
1. Do your layers contain a bitmap or are they transparent?
2. Do you want the objects created so they can be moved off a layer (can be moved anywhere) or do you want the objects to be contained within or anchored to the layer?
3. Which background image do you want to appear in the thumbnail... the background (layer 0) or the selected layer (1..xx)?

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 - Apr 20 2016 :  15:53:57  Show Profile  Reply
The layers by default are transparent but the user can load a bitmap. Either way.
Yes, the boxes needs to be moveable and resizable. But it is best for them to be anchored to the layer. Will have to check. I need to be able to move the background image while the boxes do not move. They both should be on the same layer.
The thumbnail should show the current background layer. I have the ability to load images into each layers, so they should show in the thumbnails.
All that could make it complicated I guess.
Thanks.
Pierre
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 20 2016 :  16:00:16  Show Profile  Reply
The background layer can not be moved. If the objects are anchored to the layer, when you move the layer the objects stay in the same location in the layer, but if the layer is moved the objects also move along with the layer. If the objects are anchored to a layer they cannot be moved off the layer.

If you need to be able to move the "background image" it will have to be added to a layer and resized to fit layer 0. Layer 0 or the background could be made transparent, so then you could move the background image.

With respect to the layer images and the thumbnail, it could get messy drawing all the layers as a thumbnail but it is possible.

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 - Apr 20 2016 :  16:52:41  Show Profile  Reply
if I load an image and layer 0 is not locked, I can move the image around. I will have to look at my code as I know that I can move a bitmap on layer zero with the boxes staying at the same place independently of the image all in the same layer. I use the boxes to create a template to fit the loaded image.
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 20 2016 :  18:06:04  Show Profile  Reply
ImageEnMView/ImageEnVect Demo2:
attach/w2m/201642018357_ImageEnMViewImageEnVect2.zip
64.23 KB
Revised demo to preview layers and objects. With large images this maybe sluggish so I would recommend not previewing multiple layers. You may have to adjust this to meet your needs... but it does function.


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 - Apr 21 2016 :  07:23:35  Show Profile  Reply
Thanks Bill. Let me look at the code and see if I can make it work with XE and 5.2.2
Appreciate the help really.
Pierre
Go to Top of Page

pierrotsc

USA
499 Posts

Posted - Apr 21 2016 :  12:54:27  Show Profile  Reply
Thanks Bill. I can really only look at the code. Even modifying it to work under 5.2.2 and XE gives me errors.
Anyway, I may have found a way by looking at your code. It's still not 100 % working but it is getting there. Look below

procedure TMainform.Refreshlayerviewer;
var
  i, idx: Integer;

begin
  // ShowMessage('refresh layer viewer:');
  LayerView.CenterSelected;
  LayerView.Clear;
  for i := 0 to ImageEnVect.LayersCount - 1 do
  begin
    ImageEnVectPreview.LayersClear;
    ImageEnVectPreview.RemoveAllObjects;
    ImageEnVectPreview.Assign(ImageEnVect.layers[i].Bitmap);
    if i = ImageEnVect.LayersCurrent then
      ImageEnVect.DrawObjectsToBitmap(ImageEnVectPreview.IEBitmap, True, True);
    ImageEnVectPreview.Update;
    ImageEnVectPreview.LayersMergeAll;
    idx := LayerView.AppendImage;
    LayerView.SetIEBitmap(idx, ImageEnVectPreview.IEBitmap);
    if i = 0 then
      LayerView.ImageTopText[0].Caption := 'Background'
    else
      LayerView.ImageTopText[i].Caption :=
        string(ImageEnVect.layers[ImageEnVect.LayersCurrent].Name);
  end;
  LayerView.SelectedImage := ImageEnVect.LayersCurrent;
  LayerView.Update;
end;
Go to Top of Page

pierrotsc

USA
499 Posts

Posted - Apr 21 2016 :  13:00:00  Show Profile  Reply
the only thing that prevents the code to work fully is that I need to detect if a layer has objects anchor to it and then only copy the objects from this layer and not all the objects. the drawobjectstobitmap copies every objects regardless on which layers they are anchored to.
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 21 2016 :  13:17:58  Show Profile  Reply
that is easy enough... just draw one object at a time for all objects in a layer:
procedure DrawOneObjectToBitmap(hobj: integer; target: TIEBitmap; Antialias: boolean = true; AdaptBitmapPixelFormat: boolean = true);

Something like this (Untested):
for i:= 0 to ImageEnVect1.LayerCount-1 do
begin
  for j := ImageEnVect1.ObjectsCount - 1 downto 0 do
  begin
    ihobj := ImageEnVect1.GetObjFromIndex(j);
    // if hobj is on current layer then copy the object
    iobjLayer := ImageEnVect1.ObjLayer[ihobj];
    if iobjLayer = i then
      ImageEnVect1.DrawOneObjectToBitmap(ihobj, ImageEnMView1.IEBitmap, True);
  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 - Apr 21 2016 :  13:41:12  Show Profile  Reply
Awesome. I was not aware of this command. There are so many I am sure I do not know.
Let me play to see if I do not anchor the object to the layer, where would the object show?
Not sure if I want it to show on layer zero I guess.
Best,
Go to Top of Page

w2m

USA
1990 Posts

Posted - Apr 21 2016 :  13:45:01  Show Profile  Reply
If you do not anchor a object to a layer, objects are just painted over all layers... so no matter which layer is selected you can select any object...

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: