다음을 통해 공유


ShapeElement.DoFoldToShape 메서드

연결선이 셰이프의 둘레와 만나는 지점을 계산합니다. 사각형이 아닌 모양을 정의하는 경우 이를 재정의합니다.

네임스페이스:  Microsoft.VisualStudio.Modeling.Diagrams
어셈블리:  Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0(Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)

구문

‘선언
Public Overridable Function DoFoldToShape ( _
    potentialPoint As PointD, _
    vectorEndpoint As PointD _
) As PointD
public virtual PointD DoFoldToShape(
    PointD potentialPoint,
    PointD vectorEndpoint
)

매개 변수

  • vectorEndpoint
    형식: Microsoft.VisualStudio.Modeling.Diagrams.PointD
    연결선의 방향입니다.선에서 potentialPoint에 상대적인 다른 점입니다.가로 연결선의 경우 Y 축은 항상 0이고 세로 연결선의 경우 X 축은 항상 0입니다.다른 좌표에는 임의의 값이 있습니다. 이 값의 부호는 potentialPoint에서 모양의 중심 방향을 나타냅니다.직선 연결선의 경우 X 및 Y의 비율은 줄의 경사를 제공하고 X 및 Y 값은 임의의 값입니다.

반환 값

형식: Microsoft.VisualStudio.Modeling.Diagrams.PointD
커넥터를 종료해야 하는 지점입니다.

설명

이 메서드는 셰이프의 연결선에 끝나야 경계 지점을 결정 하 라고 합니다. 기본적으로 직사각형, 점 도형의 테두리 상자에 수 있습니다. 하지만 클래스 셰이프 아이콘 직사각형이 아닌 예를 들어 아이콘 셰이프는 특이 한 형상을 정의 하는 경우 다음 기본 동작 간격 연결선 도형의 실제 가장자리 사이의 남아 있을 수 있습니다. 도형에서 연결선을 종료 해야의 가장자리에 실제 지점을 계산 하려면이 메서드를 재정의할 수 있습니다.

모양에 맞게 접기

예제

이 예제에서 만든 아이콘 셰이프 DSL 정의에서 지정 하 고 타원형 윤곽에 그림에 있는 아이콘을 제공 합니다. 기본적으로 커넥터는 경계 상자에 종료 같으나 종단 지점 측면 중에 없는 경우이 불만족. 따라서 DoFoldToShape 타원 연결선 교차 위치에 계산 해야 합니다. 다행히 원에 대해이 작업을 수행 하는 유틸리티 함수입니다: 우리가 우리의 고등학교 기 책을 찾이 필요가 없습니다. 우리는 타원에 대 한 입력 배 곱한 및 출력 같은 계수로 나누어 사용할 유틸리티 함수에 적응할 수 있습니다.

public partial class MyEllipticalIconShape
{
  public override PointD DoFoldToShape(PointD potentialPoint, PointD vectorEndpoint)
  {
    double width = this.Bounds.Width;
    double height = this.Bounds.Height;
    double k = width / height; // transform from ellipse to circle
    // This utility method folds to a circle. But we have an ellipse, so
    // we adjust the Y values of the inputs:
    PointD result = ShapeGeometry.SnapToCircle(
        new PointD(width / 2, width / 2), // center, relative to shape
        width / 2, // radius of circle
        new PointD(vectorEndpoint.X, vectorEndpoint.Y * k),
        new PointD(potentialPoint.X, potentialPoint.Y * k));
    // Transform the circular result back to the ellipse:
    return new PointD(result.X, result.Y / k); 
 }
}

.NET Framework 보안

  • 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.

참고 항목

참조

ShapeElement 클래스

Microsoft.VisualStudio.Modeling.Diagrams 네임스페이스