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

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 The unit of measurement in the ruler box

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

View 
UserName:
Password:
Format  Bold Italicized Underline  Align Left Centered Align Right  Horizontal Rule  Insert Hyperlink   Browse for an image to attach to your post Browse for a zip to attach to your post Insert Code  Insert Quote Insert List
   
Message 

 

Emoji
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Black Eye [B)]
Frown [:(] Shocked [:0] Angry [:(!] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
Boban Posted - Dec 01 2012 : 04:23:19
Hi

How do I set the ComboBox in Munite (cm, mm, pixel, dpi) units so that when inserting images in Layer ImageEnVector automatically move to the margins RulerBox if possible? I need to create covers to DVD and CD discs. If you can not be an ekample or any other solution.



2   L A T E S T    R E P L I E S    (Newest First)
Boban Posted - Dec 15 2012 : 20:21:58
Hi Fabrizio

Thank you.

I did this with ComboBox onchange. I tried in two dimensions field enter the Edit templates or pictures but we did not work when I enter the number in the Edit field with a comma, then we report a mistake in the'' comma''.
How to enter in the edit field size dimensions change templates and pictures as well as change from the ComboBox and change the unit of measurement is to be made on RulerBox but to be in operation and commas?

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
if combobox2.Text ='Pixels' then
m_dpi := 1;
ImageEnView1ViewChange(self, 1);
if combobox2.Text ='Inches' then
m_dpi := ImageEnView1.IO.Params.Dpi;
ImageEnView1ViewChange(self, 1);
if combobox2.Text ='Centimeters' then
m_dpi := ImageEnView1.IO.Params.Dpi / 2.54;
ImageEnView1ViewChange(self, 1);
end;

//Error entry point to edit

procedure TForm1.Edit1Change(Sender: TObject);
begin
ImageEnView1.Proc.ImageResize(StrToInt(Edit1.Text), StrToInt(Edit2.Text), iehLeft, ievTop);
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
ImageEnView1.Proc.ImageResize(StrToInt(Edit1.Text), StrToInt(Edit2.Text), iehLeft, ievTop);
end;
fab Posted - Dec 14 2012 : 03:56:47
Hi,
you should set DotPerUnit to the DPI value, for inches, DPI/2.54 for centimeters and so on.

z := ImageEnView1.Zoom / 100;
  if pixels? then
    m_dpi := 1
  else if inchies? then
    m_dpi := ImageEnView1.IO.Params.Dpi
  else if centimeters? then
    m_dpi := ImageEnView1.IO.Params.Dpi / 2.54
   ...etc...

  HorizRuler.ViewPos := ImageEnView1.ViewX / z / m_dpi;
  VertRuler.ViewPos  := ImageEnView1.ViewY / z / m_dpi;
  HorizRuler.DotPerUnit := z * m_dpi;
  VertRuler.DotPerUnit  := z * m_dpi;


Here is the Others/RulerBox example modified (Pixels1, Inches1 and Centimeters1 are menu items to select the measure unit):




unit umain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ieview, imageenview, rulerbox, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    VertRuler: TRulerBox;
    ImageEnView1: TImageEnView;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    N1: TMenuItem;
    Exit1: TMenuItem;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    HorizRuler: TRulerBox;
    Panel2: TPanel;
    View1: TMenuItem;
    Center1: TMenuItem;
    Units1: TMenuItem;
    Pixels1: TMenuItem;
    Inches1: TMenuItem;
    Centimeters1: TMenuItem;
    procedure Exit1Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ImageEnView1ViewChange(Sender: TObject; Change: Integer);
    procedure Center1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure OnSelectUnits(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    m_dpi: double;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
{$R WindowsXP.RES}

procedure TForm1.FormCreate(Sender: TObject);
begin
  m_dpi := 1; // pixels
end;


// File | Exit
procedure TForm1.Exit1Click(Sender: TObject);
begin
  Close;
end;

// File | Open
procedure TForm1.Open1Click(Sender: TObject);
begin
  with ImageEnView1.IO do
    LoadFromFile( ExecuteOpenDialog('','',false,1,'') );
  FormResize(self);
end;

// mouse move
procedure TForm1.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  HorizRuler.GripsPos[0] := ImageEnView1.XScr2Bmp( X );
  VertRuler.GripsPos[0]  := ImageEnView1.YScr2Bmp( Y );
end;

// scroll or zoom
procedure TForm1.ImageEnView1ViewChange(Sender: TObject; Change: Integer);
var
  z: double;
begin
  z := ImageEnView1.Zoom / 100;

  HorizRuler.ViewPos := ImageEnView1.ViewX / z / m_dpi;
  VertRuler.ViewPos  := ImageEnView1.ViewY / z / m_dpi;

  HorizRuler.DotPerUnit := z * m_dpi;
  VertRuler.DotPerUnit  := z * m_dpi;

  HorizRuler.Frequency := 10 / HorizRuler.DotPerUnit;
  VertRuler.Frequency  := 10 / VertRuler.DotPerUnit;
  HorizRuler.LabelFreq := 100 / HorizRuler.DotPerUnit;
  VertRuler.LabelFreq  := 100 / VertRuler.DotPerUnit;

  StatusBar1.SimpleText := 'Zoom ' + FloatToStr( ImageEnView1.Zoom ) + '%';

  if Change = 1 then
    FormResize(self);
end;


// View -> Center
procedure TForm1.Center1Click(Sender: TObject);
begin
  ImageEnView1.Center := Center1.Checked;
  FormResize(self);
end;

// Form resize, adjust rulers offsets
procedure TForm1.FormResize(Sender: TObject);
begin
  HorizRuler.OffsetX := ImageEnView1.OffsetX;
  VertRuler.OffsetY  := ImageEnView1.OffsetY;
end;

procedure TForm1.OnSelectUnits(Sender: TObject);
begin
  if Sender = Pixels1 then
    m_dpi := 1
  else if Sender = Inches1 then
    m_dpi := ImageEnView1.IO.Params.Dpi
  else if Sender = Centimeters1 then
    m_dpi := ImageEnView1.IO.Params.Dpi / 2.54;
  ImageEnView1ViewChange(self, 1);
end;


end.