안드로이는 2D Drawing API가 상당히 뛰어납니다. 일반 PC에서 제공하는 API 수준.. 그 이상인데요. 안드로이에서 제공하는 2D Drawing API 중에서 텍스트에 외곽선 효과를 주는 코드에 대해 간단히 소개해 드리겠습니다. 결과를 먼저 보여드리면 다음과 같습니다.
위의 시스템은 지오서비스에서 현재 개발중인 지적도 현장 검색 시스템으로.. 항공사진과 지적도를 표현하고 있습니다. 지적도의 특성상 라벨로.. 지번을 텍스트로 표현해야 합니다. 텍스트를 그냥 표현하게 되면 지도와 텍스트가 섞여 라벨이 눈에 잘 들어오지 않게 됩니다. 해서.. 라벨에 외곽선을 그려주게 되면 라벨의 가독성이 향상됩니다. 위의 그림에서처럼 글자는 하얀색으로 하고 외곽선은 검정색으로 하는 코드는 다음과 같습니다.
textPaint = new Paint(); textPaint.setAntiAlias(true); textPaint.setColor(Color.WHITE); textPaint.setTextSize(textSize); strokePaint = new Paint(); strokePaint.setAntiAlias(true); strokePaint.setTextSize(textSize); strokePaint.setColor(Color.BLACK); strokePaint.setStyle(Paint.Style.STROKE); strokePaint.setStrokeWidth(4);
위의 코드에서 보시는 것처럼.. 하얀색의 글자와 외곽선의 검정색에 대한 Paint 객체를 2개 만듭니다. 즉 글자 자체의 하얀색에 대한 textPaint와 검정색 외곽선에 대한 strokePaint 변수가 바로 그 것입니다. 이렇게 만들어진 Paint 객체를 다음의 텍스트 그리기 함수에서 사용합니다.
String text = "label"; canvas.drawText(text, x, y, strokePaint); canvas.drawText(text, x, y, textPaint);
텍스트 그리기 한번 그리고 외곽선 그리기 한번.. 이렇게 총 2번을 그려서 텍스트의 외곽선을 표현해 줄 수 있습니다. 외곽선의 굵기를 원하는 만큼 지정할 수 있는데요. 방법은 strokePaint의 setStrokeWidth 매서드에 원하는 굵기만큼 값을 주면 쉽게 원하는 바를 얻을 수 있습니다.
감사합니다, 지금 필요한 코드였네요…
도움이 되셨다니 좋습니다..!