도형 및 워터마크 그리기

도형 및 워터마크 그리기

도형 그리기 및 워터마크

Word 문서는 AutoShapes, 그림, 텍스트 상자 및 OLE 개체를 별도의 그리기 레이어에 보관하며, 이는 단락/런 텍스트 흐름과는 구분됩니다. Aspose.Words .NET용 FOSS는 이 레이어를 Shape 클래스(구체적인 그리기 개체)와 그 추상 기본 클래스 ShapeBase로 모델링하며, 두 클래스는 모두 Aspose.Words.Drawing 네임스페이스의 일부입니다. 이 가이드는 도형 모델, 이미지 및 AutoShapes 삽입, 위치 지정 및 텍스트 래핑, 채우기 및 효과, 그룹화, 그리고 워터마크를 다룹니다.


도형 및 ShapeBase 모델

Shape — sealed이며 직접 작업하는 유형 — 은 그리기 레이어에서 AutoShape, 텍스트 상자, 자유형, OLE 개체, ActiveX 컨트롤 또는 그림을 나타냅니다. 이는 추상 클래스 ShapeBase을 상속받으며, 이 클래스는 모든 그리기 개체가 공유하는 속성들을 제공합니다: 위치 (Left, Top, Width, Height, Rotation), ShapeType 열거형 값, 그리고 Fill, Stroke, ShadowFormat, Glow, Reflection와 같은 서식 하위 개체들. GroupShape(또한 ShapeBase임)는 하나의 단위로 취급되는 도형 그룹을 나타냅니다. 독립형 도형은 new Shape(doc, shapeType)를 사용해 직접 생성할 수 있으며, 여기서 shapeType은 Rectangle, Ellipse, Star, TextBox와 같은 ShapeType 값입니다. 그런 다음 DocumentBuilder.InsertNode(node)를 사용해 트리에 삽입합니다.


이미지와 AutoShapes을 DocumentBuilder로 삽입하기

특히 그림의 경우, DocumentBuilder.InsertImage이 더 직접적인 방법입니다: 오버로드는 Image, 파일 경로, Stream, 또는 원시 바이트 배열을 받아들이며, 명시적인 width/height 또는 전체 위치 지정(horzPos, left, vertPos, top, width, height, wrapType)을 설정하는 추가 오버로드도 있습니다. 결과로 얻어진 Shape는 ImageData 속성을 통해 그림 데이터를 노출합니다 — 이미지를 교체하려면 ImageData.SetImage(...)를 사용하고, 기본 조정을 위해 CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, GrayScale을 제공합니다. GroupShape 인스턴스는 DocumentBuilder.InsertGroupShape(shapes)으로 생성됩니다.


위치 지정 및 텍스트 래핑

도형의 페이지에 대한 배치는 RelativeHorizontalPosition와 RelativeVerticalPosition에 의해 제어됩니다(Page, Margin, Column 또는 유사한 앵커에 각각 상대)와 함께 Left/Top 오프셋 속성이 있습니다. HorizontalAlignment와 VerticalAlignment은 간단한 상대 정렬을 처리합니다. 주변 텍스트가 도형 주위를 흐르는 방식은 WrapType로 설정하고, 면별 래핑을 위해서는 WrapSide을 사용합니다. IsInline은 도형이 텍스트와 함께 흐르는지(인라인) 아니면 독립적으로 떠 있는지를 보고합니다.


채우기, 스트로크 및 효과

Shape.Fill (a Fill object) 은(는) 도형 내부가 어떻게 채워지는지를 제어합니다: 평면 색상의 경우 Fill.Solid(color), 그라데이션의 경우 Fill.OneColorGradient(...) / Fill.TwoColorGradient(...), 패턴의 경우 Fill.Patterned(patternType), 그림 채우기의 경우 Fill.SetImage(...); FillType 은(는) 이 중 어떤 것이 활성화되어 있는지 보고합니다. 외곽선은 Stroke 속성을 통해 제어되며, 시각 효과는 별도의 서식 개체 — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), 및 SoftEdge (SoftEdgeFormat) — 로 노출되고, 각각 효과를 지우는 자체 Remove() 메서드를 가집니다.


도형 및 텍스트 상자 그룹화

여러 모양을 GroupShape에 결합할 수 있으며, 이는 자체적으로 단일 ShapeBase처럼 동작하고 자체 Fill, ShadowFormat, Glow, 및 Reflection를 가집니다. 텍스트를 포함하는 모양의 경우, Shape.TextBox (a TextBox object)는 텍스트 전용 레이아웃을 노출합니다: 패딩을 위한 InternalMarginLeft/Right/Top/Bottom, 모양을 자동 크기 조정하기 위한 FitShapeToText, 텍스트 방향을 위한 LayoutFlow, 그리고 모양 내 수직 텍스트 정렬을 위한 VerticalAnchor.


Watermarks

Document.Watermark (a Watermark 객체) 는 단일 도형과 무관하게 문서 전체에 워터마크를 관리합니다. Watermark.SetText(text) 또는 SetText(text, options) 를 호출하여 텍스트 워터마크를 설정하고, SetImage(...) 를 호출하여 그림 워터마크를 설정하며, Watermark.Remove() 로 이를 제거합니다. Watermark.Type 은 현재 WatermarkType (Text, Image, 또는 None) 를 보고합니다. TextWatermarkOptions 은 FontFamily, FontSize, Color, 및 Layout (WatermarkLayout.Horizontal 또는 Diagonal) 를 제어하고, ImageWatermarkOptions 은 Scale와 IsWashout 를 제어합니다.


팁 및 모범 사례

  • 단일 Shape 및 GroupShape 인스턴스 모두에서 작동해야 하는 코드를 작성할 때는 ShapeBase를 사용하십시오; ImageData 또는 Chart와 같은 그림 또는 AutoShape 전용 멤버가 필요할 경우에는 Shape를 직접 사용하십시오.
  • 도형을 띄울 때 RelativeHorizontalPosition / RelativeVerticalPosition을 WrapType와 함께 설정하십시오 — 인라인 도형(InsertImage의 기본값)은 띄우기 전까지 위치 속성을 무시합니다.
  • 텍스트 뒤에 Shape을 수동으로 삽입하고 위치를 지정하는 대신, 전체 문서에 적용되는 단일 워터마크에는 Document.Watermark를 사용하는 것이 좋습니다.
  • 개별 속성을 0으로 설정하는 대신, 객체의 Remove() 메서드(ShadowFormat.Remove(), ReflectionFormat.Remove())를 사용하여 효과를 지우십시오.
  • ImageData, Chart 또는 그룹 전용 멤버에 접근하기 전에 Shape.HasImage, Shape.HasChart 또는 Shape.IsGroup를 확인하십시오. Shape는 여러 종류의 그리기 객체 중 하나를 나타낼 수 있기 때문입니다.

일반적인 문제

문제원인해결
형상에 Left/Top을 설정해도 눈에 보이는 효과가 없습니다형상이 여전히 인라인(IsInline == true)입니다WrapType을 플로팅 값으로 설정하고 RelativeHorizontalPosition/RelativeVerticalPosition를 설정하여 위치 지정 속성이 적용되도록 합니다
Shape.ImageData이 예외를 발생시키거나 비어 있습니다형상이 그림 형상이 아닙니다ImageData를 읽기 전에 Shape.HasImage를 확인하십시오.
워터마크 텍스트가 요청된 글꼴과 일치하지 않습니다.TextWatermarkOptions가 제공되지 않았습니다.FontFamily이(가) Watermark.SetText(text, options)로 설정된 TextWatermarkOptions 인스턴스를 전달하십시오.
그룹의 자식 도형들이 함께 움직이지 않습니다.자식들이 그룹을 통해서가 아니라 직접 재배치되었습니다.GroupShape 자체를 이동하거나 크기를 조정하여 좌표 변환이 모든 자식에게 적용되도록 하십시오.

FAQ

Shape와 ShapeBase의 차이점은 무엇입니까?

ShapeBase은(는) Shape과 GroupShape가 공유하는 추상 기본 클래스입니다. 두 종류를 균일하게 처리해야 하는 코드에서는 ShapeBase을(를) 사용하고, ImageData나 Chart과 같이 단일 도형 개체에 특화된 멤버가 필요할 때는 Shape을(를) 사용하십시오.

문서에 그림을 추가하려면 어떻게 해야 하나요?

다음 중 하나의 DocumentBuilder.InsertImage 오버로드를 사용하십시오 — Image 객체, 파일 경로, Stream 또는 바이트 배열을 전달하고, 선택적으로 width/height 또는 전체 위치 인수를 사용할 수 있습니다.

도형을 텍스트와 인라인으로 배치하지 않고 떠 있도록 하려면 어떻게 해야 하나요?

그의 WrapType를 인라인이 아닌 값으로 설정하고, RelativeHorizontalPosition/RelativeVerticalPosition를 설정하여 도형의 Left/Top 오프셋이 페이지, 여백 또는 열을 기준으로 해석되도록 합니다.

텍스트 워터마크와 이미지 워터마크를 동시에 추가할 수 있나요?

Document.Watermark.Type은(는) 현재 워터마크 유형을 나타냅니다; SetText이나 SetImage로 새 워터마크를 설정하면 이전에 있던 워터마크가 교체되므로 문서에는 한 번에 최대 하나의 활성 워터마크만 존재합니다.

도형에서 그림자 또는 반사를 제거하려면 어떻게 해야 하나요?

해당 서식 객체에서 Remove()를 호출하십시오 — Shape.ShadowFormat.Remove() 또는 Shape.Reflection.Remove().


API Reference 요약

클래스/메서드설명
Shape단일 드로잉 레이어 객체 — AutoShape, 그림, 텍스트 상자 또는 OLE 객체.
ShapeBase추상 기본 클래스는 Shape와 GroupShape가 공유합니다.
GroupShape하나의 드로잉 객체로 취급되는 도형 그룹.
DocumentBuilder.InsertImage커서 위치에 그림 형태를 삽입하고, 선택적으로 크기와 위치를 지정합니다.
ImageData그림 데이터와 이미지 조정(자르기, 밝기, 대비)이 Shape에 적용됩니다.
Fill내부 채우기 형식 — 단색, 그라디언트, 패턴 또는 그림.
RelativeHorizontalPosition / RelativeVerticalPosition플로팅 도형의 위치가 측정되는 기준.
WrapType / WrapSide주변 텍스트가 도형을 둘러싸는 방법.
TextBox텍스트를 포함하는 도형에 대한 텍스트 레이아웃 설정.
Document.Watermark문서의 텍스트 또는 이미지 워터마크를 관리합니다.
TextWatermarkOptions / ImageWatermarkOptions텍스트 또는 이미지 워터마크의 모양을 구성합니다.

참조

 한국어