사용자 도구

사이트 도구


android:pdfdocument:drawingtagble
drawingtagble

문서의 이전 판입니다!


소개

다음과 같이 표를 그리고, 데이터베이스에서 가져온 값을 표에 넣을 것이다.

tabledrawing

표 그리기

1. 개념

표를 그릴려면 어떻게 해야 할까? 여러가지 방법이 있을 것인데 하나는 큰 박스를 넣은 후 그 안에 선을 그리는 방법이 있을 것이다. 또다른 방법은 박스를 여러개 그리는 것이다. 이를테면 한 줄에 2개의 칸이 있는 2×1 표를 그린다고 해보자. 그러면 긴 박스와 작은 박스를 겹쳐서 그리면 될 것이다. 나는 선을 그리는 방법보다는 박스를 겹치는 방법을 선택했다.

왜냐하면 위의 그림에서도 보듯이 셀에 음영을 넣는 경우가 생길텐데, 음영을 넣으려면 이 역시 박스를 그리는 방식으로 진행된다. 따라서 선을 그리고 음영을 넣는다는 것은 중복된 일을 하는 것가 마차가지가 되는 것이다. 그리고 박스를 중첩하는 방식으로 표를 만들면, 각 셀 안에 들어간 텍스트의 위치를 계산하는 것도 쉽다. 

2. 셀 그리기

표를 그리려면 기준점이 있어야 한다. 좌측 상단을 기준점으로 잡는 것이 통상적이고, 가장 이해하기 쉬울 것이다. 좌측 상단을 기준으로 2개의 박스를 겹쳐서 1줄짜리 표를 그리면 다음과 같이 될 것이다.

        /** 변수 **/
        val cellHeight = 30   // Row Height : 40
        val columnWidth = 180f   // 내부선
        val vcOffset = 4f //  세로 중간을 맞추기 위한 오프셋
 
        // Rect
        canvas.drawRect(currentPOS.X.toFloat(), currentPOS.Y.toFloat(),  endOfBody, currentPOS.Y.toFloat() + cellHeight, linePaint)  // 첫쨰 줄
        canvas.drawRect(currentPOS.X.toFloat(), currentPOS.Y.toFloat(),  currentPOS.X.toFloat() + columnWidth, currentPOS.Y.toFloat() + cellHeight, linePaint)  // 제목박스

여기서 endOfBody는 본문 영역의 너비를 말한다. 사전에 다음과 같이 정의되었다.

    // 여백
    val marginTop = 42
    val marginBottom = 50
    val marginLeft = 47
    val marginRight = 48
 
    // end of 본문
    val endOfBody = (PDF_PAGE_WIDTH - marginRight).toFloat()
로그인하면 댓글을 남길 수 있습니다.

android/pdfdocument/drawingtagble.1733845987.txt.gz · 마지막으로 수정됨: 2024/12/11 00:53 저자 이거니맨