관련: 지식인

 

 

지도의 면적을 구하기 위해 구분구적법을 사용할 수 있는데

파워포인트에서 지도 도형 내부를 정사각형으로 자동으로 채우는 방법입니다.

 

1. 일반적인 방법으로는 네모 도형으로 슬라이드를 채우고 나서

수작업으로 바깥쪽을 지워주어야겠습니다.

아래 영상을 참고하세요.

https://youtu.be/-EDF7nIvugQ?t=120

 

 

2. VBA를 이용하는 능력이 된다면

지도 도형과 네모도형을 충돌체크 등을 이용해서 찾아내도록

해볼 수 있겠습니다.

하지만 연구가 좀 필요하고 VBA로는 속도가 잘 안나옵니다.

시간을 내어 위와 같이 테스트해보았습니다.

Map 1이라는 지도 도형을 만들고 그 위에

FillBox 매크로를 이용해 슬라이드에 사각형들을 가득 채워넣고

(채우고 나서 그룹으로 묶고 정사각형으로 만들고 크기를 줄이고 다시 그룹 해제)

(사각형 개수를 30,30 등으로 입력하면 Map 1 도형에 맞게 사각형을 그려줌.)

RemoveOuterArea 매크로를 실행하면

Map 1 이라는 도형과 충돌 테스트를 해서 겹치지 않는 외부에 있는 사각 도형들을 삭제해줍니다.

(SelectInnerArea는 지도 도형 내부에 있는 도형만 선택할 수도 있습니다.)

 

더보기
Sub RemoveOuterArea()

    Dim SLD As Slide
    Dim mShp As Shape
    Dim i As Integer
    
    If ActiveWindow.Selection.Type = ppSelectionSlides Then Exit Sub
    
    Set SLD = ActiveWindow.View.Slide
    ActiveWindow.Selection.Unselect
    
    Set mShp = SLD.Shapes("Map 1")
    
    For i = SLD.Shapes.Count To 1 Step -1
        If Not mShp Is SLD.Shapes(i) Then
            If Not MergeTest(SLD.Shapes(i), mShp) Then
                 SLD.Shapes(i).Delete
            End If
        End If
    Next i
    
End Sub

Function MergeTest(A As Shape, B As Shape) As Boolean

    Dim SLD As Slide
    Dim AA As Shape, BB As Shape
    Dim oldCnt As Long, newCnt As Long
    
    Set SLD = A.Parent
    Set AA = A.Duplicate(1): DoEvents
    AA.Left = A.Left
    AA.Top = A.Top
    
    Set BB = B.Duplicate(1): DoEvents
    BB.Left = B.Left
    BB.Top = B.Top
    
    oldCnt = SLD.Shapes.Count
    '도형병합(교차하기)
    SLD.Shapes.Range(Array(AA.ZOrderPosition, BB.ZOrderPosition)).MergeShapes msoMergeIntersect
    newCnt = SLD.Shapes.Count
    
    If newCnt = oldCnt - 1 Then
        SLD.Shapes(newCnt).Delete
        MergeTest = True
    Else
        MergeTest = False
    End If
    
End Function

 

 

실행 영상:

 

 

 

실행 결과:

 

 

위 방법을 실제 지도에 적용해보겠습니다.

 

여기서는 의미 있게 동도와 서도로 이루어진 '독도' 지도에 위 방법을 적용해보았습니다.

지도 모양이 복잡하고 슬라이드에서 차지하는 면적이 클수록 시간이 오래 걸립니다.

 

 

실행 결과 가로, 세로 0.43cm 짜리 정사각형 도형을 372개 사용하였습니다.

현재는 지도 도형에 스치기만 해도 정사각형 도형이 추가되었기 때문에 실제 면적보다 넓은 영역을 차지하겠습니다.

 


 

 

추가로 위 방법을 응용하여 텍스트를 도형으로 만든 다음

사각형 도형과 교차해서 나만의 글자 모양을 만들 수도 있습니다.

 

텍스트상자에 '독도'라고 입력하고 빈 텍스트 상자를 그리고 서로 도형병합(빼기)를 해주면

독도라는 글자가 벡터 도형으로 변환됩니다. 이 도형의 이름을 Map 1 이라고 이름을 변경합니다.

 

이 글자 도형과 사각형 도형을 교차시킵니다.

그리고 위 매크로를 실행해서 글자 영역만 도형을 남깁니다.

아래처럼 나만의 글자가 완성되었습니다.

배경이미지 디자인

 

샘플 파일 첨부합니다.

FillMap1.pptm
0.53MB

 

독도지도이용배경이미지.zip
0.83MB