Click or drag to resize
XDL

NanMagnifier Class

확대주기 객체 도시 정보를 저장하기 위한 클래스
확대영역 이미지 생성을 위해 SetMagnifiedImageDelegate() 함수를 이용해서 delegate 함수를 등록해야 한다.
NanMagnifier 클래스는 Rectangle 영역 및 비어 있는 Bitmap 을 가지고 있으며,
이 Bitmap에 이미지를 설정하기 위해서 영상이 도시되어 있는 외부 뷰어(NEditor)에서 Rectangle 영역에 대한 BitmapImage를 생성해서 가져와야 한다.
NanLayer에 NanMagnifier 객체를 추가하고 추가한 NanLayer 객체를 NEditor의 SetEditLayer(layer)로 설정한다면 SetEditLayer(layer) 내부에서 NanMagnifier 객체에
확대영역 이미지 생성을 위한 delegate 함수를 등록하기 때문에 따로 delegate 함수를 등록할 필요가 없다.
단, SetEditLayer()를 통하지 않고, NEditor의 EditLayer에 직접 AddTail(magnifierObj)을 수행한다면,
magnifierObj.SetMagnifiedImageDelegate(NEditor 객체의 GetMagnifiedImage)를 이용해서 수동으로 delegate 함수를 등록해야 한다.
Inheritance Hierarchy
SystemObject
  Pixoneer.NXDL.NXAnnotation.NAnnotationNanObj
    Pixoneer.NXDL.NXAnnotation.NAnnotationNanMagnifier

Namespace: Pixoneer.NXDL.NXAnnotation.NAnnotation
Assembly: NXAnnotation (in NXAnnotation.dll) Version: 2.0.3.38 (2.0.3.38)
Syntax
C#
public class NanMagnifier : NanObj

The NanMagnifier type exposes the following members.

Constructors
 NameDescription
Public methodNanMagnifier NanMagnifier 클래스의 기본 생성자로서, 멤버변수에 대하여 초기화를 수행한다.
Top
Methods
 NameDescription
Public methodCalcRange 객체의 최소, 최대 범위를 계산한다.
(Overrides NanObjCalcRange)
Public methodClone 객체를 복사한다.
(Overrides NanObjClone)
Public methodGetGuideLineType 연결선 옵션을 가져온다.
Public methodSet 확대영역 이미지의 영역을 설정한다.
Public methodSetBackColor Background 색을 설정한다.
(Overrides NanObjSetBackColor(Color))
Public methodSetForeColor Foreground 색을 설정한다.
(Overrides NanObjSetForeColor(Color))
Public methodSetGuideLineType 연결선 옵션을 설정한다.
Public methodSetLineColor 선 색을 설정한다.
(Overrides NanObjSetLineColor(Color))
Public methodSetLineStyle 선 스타일을 설정한다.
(Overrides NanObjSetLineStyle(eLineStyle, DoubleCollection))
Public methodSetLineThick 선 두께를 설정한다.
(Overrides NanObjSetLineThick(Double))
Public methodSetMagnifiedImage 정의된 delegate 함수에서 BitmapImage를 가져와서 확대주기의 이미지로 셋팅한다.
Public methodSetMagnifiedImageDelegate 확대영역을 가져오기 위한 delegate 함수를 설정한다.
Public methodSetThickUnit 도형의 선 굵기 단위(world 좌표 단위)를 설정한다.
(Overrides NanObjSetThickUnit(Boolean, Double, Double))
Public methodStatic memberToObjectString 객체 class 이름을 가져온다.
Top
Fields
 NameDescription
Public fieldStatic memberBitmapName 확대주기의 이미지 객체 이름을 정의
Public fieldStatic memberHitFlagBitmapInsideIndex 이미지 객체 내부 hitting시 설정하기 위한 hit flag index
Public fieldStatic memberHitFlagOffset hitting 된 이미지 객체와 사각 영역 객체를 구분하기 위한 XHitFlag.Index Offset
XHitFlag.Index가 0~9이면 이미지 객체, 10~19이면 사각 영역 객체가 hitting 되었음을 의미
Public fieldStatic memberHitFlagRectangleInsideIndex 사각 영역 내부 hitting시 설정하기 위한 hit flag index
Public fieldStatic memberLine1Name 확대주기의 첫번째 가이드 라인 객체 이름을 정의
Public fieldStatic memberLine2Name 확대주기의 두번째 가이드 라인 객체 이름을 정의
Public fieldStatic memberRectangleName 확대주기의 사각 영역 객체 이름을 정의
Top
Example
NEditor의 EditLayer에 AddTail(), AddHead()를 이용해서 직접 NanMagnifier 객체를 추가할 때 delegate 함수 등록 예제 (Normalize 수행 후 NEditor 에 도시하는 예제)
C#
OpenFileDialog openfileDlg = new OpenFileDialog();
openfileDlg.Filter = "NVMZ|*.nvmz|벡터파일 포맷|*.nvmz";
openfileDlg.RestoreDirectory = true;

if (openfileDlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;

string strError = string.Empty;
string strFileName = openfileDlg.FileName;

NanBase tempBase = NCanvasFileIO.LoadCanvasVector(strFileName, ref strError);
NanLayer layer = tempBase[0];
tempBase.RemoveLayer(0);

layer.CalcRange();

NEditor curCanvas = GetCurrentCanvasView();
double minx = 0;
double maxx = 0;
double miny = 0;
double maxy = 0;
if (curCanvas.Composite != null)
{
    curCanvas.Composite.GetBoundRect(ref minx, ref maxx, ref miny, ref maxy);
}
else
{
    minx = 0;
    maxx = curCanvas.CanvasWidth;
    miny = 0;
    maxy = curCanvas.CanvasHeight;
}
double sfx0, sfx1, sfy0, sfy1;
sfx0 = sfx1 = sfy0 = sfy1 = 0;
Xfn.GetScaleFactor(layer.Minx, layer.Maxx, minx, maxx, ref sfx0, ref sfx1);
Xfn.GetScaleFactor(layer.Miny, layer.Maxy, miny, maxy, ref sfy0, ref sfy1);

layer.Normalize(sfx0, sfx1, sfy0, sfy1);

curCanvas.EditLayer.RemoveObjAll();
for (int i = layer.Count - 1; i >= 0; i--)
{
    NanObj obj = layer[i];
    layer.RemoveObj(i);
    curCanvas.EditLayer.AddHead(obj);
    if (obj.Type == eAnnType.Magnifier)
    {
        ((NanMagnifier) obj).SetMagnifiedImageDelegate(curCanvas.GetMagnifiedImage);
        ((NanMagnifier) obj).SetMagnifiedImage();   // delegate 함수를 이용해서 확대영역 이미지를 설정한다.
    }
}

curCanvas.EditLayer.CalcRange();
curCanvas.UpdateVector();
curCanvas.ZoomFit();
See Also