[flutter (플루터 앱 개발)] Flutter Canvas 그리기 예제 - (4) Canvas에 Text 그리기

Canvas에 Text 그리기

실행 화면

화면 특정 좌표에 원과 텍스트를 그리는 예제입니다. 원, 사각형, 라인 등은 좌표만 입력하면 쉽게 그릴 수 있기 때문에 사용법이 조금 다른 텍스트 그리기 위주로 포스팅합니다.

011.png

 

Flutter Canvas에서 텍스트 그리기: 자세한 설명과 코드

Flutter의 Canvas를 활용하여 화면에 텍스트를 그리는 방법을 다룹니다. 이 과정에서 TextPainter를 사용하여 텍스트를 원하는 위치에 그리는 예제를 제공합니다.


1. 텍스트 그리기 함수

Canvas에 텍스트를 그리기 위해서는 TextPainter를 활용해야 합니다. 아래는 텍스트를 중심 정렬로 그리는 함수입니다.

 void _drawText(Canvas canvas, double centerX, double centerY, String text, TextStyle style) {
  final textSpan = TextSpan(
    text: text,
    style: style,
  );

  final textPainter = TextPainter()
    ..text = textSpan
    ..textDirection = TextDirection.ltr
    ..textAlign = TextAlign.center
    ..layout();

  final double xCenter = centerX - textPainter.width / 2;
  final double yCenter = centerY - textPainter.height / 2;
  final Offset offset = Offset(xCenter, yCenter);

  textPainter.paint(canvas, offset);
}
 

설명

  • TextSpan: 텍스트와 스타일 정보를 담습니다.
  • TextPainter: 텍스트의 레이아웃을 계산하고 그립니다.
  • 중심 정렬을 위해 텍스트의 너비와 높이를 계산한 후, 시작 위치를 보정합니다.

2. 전체 코드 예제

Canvas에 원과 텍스트를 함께 그리는 예제입니다.

 import 'package:flutter/material.dart';

class TextDrawingPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomPaint(
        child: Container(),
        painter: TextPainterExample(),
      ),
    );
  }
}

class TextPainterExample extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    // 배경 그리기
    final paintBackground = Paint()
      ..color = Colors.white
      ..style = PaintingStyle.fill;

    canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paintBackground);

    // 원과 텍스트 스타일 정의
    final paintCircle = Paint()
      ..color = Colors.blue
      ..style = PaintingStyle.fill;

    final textStyle = TextStyle(
      color: Colors.white,
      fontSize: 20,
    );

    // 원과 텍스트 그리기
    final center = Offset(size.width / 2, size.height / 2);
    canvas.drawCircle(center, 50.0, paintCircle);
    _drawText(canvas, center.dx, center.dy, "Flutter", textStyle);
  }

  void _drawText(Canvas canvas, double centerX, double centerY, String text, TextStyle style) {
    final textSpan = TextSpan(
      text: text,
      style: style,
    );

    final textPainter = TextPainter()
      ..text = textSpan
      ..textDirection = TextDirection.ltr
      ..textAlign = TextAlign.center
      ..layout();

    final double xCenter = centerX - textPainter.width / 2;
    final double yCenter = centerY - textPainter.height / 2;
    final Offset offset = Offset(xCenter, yCenter);

    textPainter.paint(canvas, offset);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) {
    return false;
  }
}
 

설명

  1. CustomPainter를 사용하여 화면에 그립니다.
  2. paint 메서드에서 배경, 원, 텍스트를 순차적으로 그립니다.
  3. _drawText 함수는 텍스트의 위치와 스타일을 정렬하여 Canvas에 텍스트를 렌더링합니다.

결론

Flutter Canvas에서 텍스트를 그리는 방법은 TextPainter를 활용하여 구현할 수 있습니다. 이 과정을 통해 원하는 위치에 텍스트를 표시하고, 다양한 스타일을 적용할 수 있습니다.

이 코드를 기반으로 다양한 응용을 시도해보세요! 필요 시 추가적으로 커스터마이징이 가능합니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
22 [unity, unity3d] 씬 뷰 조작법 | 유니티 졸리운_곰 2024.12.26 198
21 [Unity] 3D 씬(Scene) 뷰 조작법 file 졸리운_곰 2024.12.23 220
20 [Unity] 3D Unity 조작하기 file 졸리운_곰 2024.12.23 236
19 [Unity] [모바일, 2D] 유니티 기초2 - 씬 전환하기 file 졸리운_곰 2024.12.14 186
18 [Unity] How to Create a Metaverse dApp with Unity : Unity로 Metaverse dApp을 만드는 방법 file 졸리운_곰 2023.09.13 397
17 [Unity] [유니티 게임개발] [Unity] ML-Agents 설치 및 테스트해보기 file 졸리운_곰 2023.01.05 223
16 [Unity] [Unity2D] 유니티 2D기본과 애니메이션 file 졸리운_곰 2022.12.19 208
15 [Unity] Unity 3D Keyframe Animation 유니티 애니메이션 file 졸리운_곰 2022.12.19 182
14 [unity] 유니티 에셋스토어에서 구매한 에셋 불러오기 file 졸리운_곰 2022.12.04 327
13 Calling RESTful APIs in Unity3D file 졸리운_곰 2021.01.02 268
12 Unity C# – Coroutine 알아보기 file 졸리운_곰 2020.12.09 228
11 How to Make a Mini Minecraft Game file 졸리운_곰 2020.07.20 344
10 Coding your own blockchain with Unity3D file 졸리운_곰 2020.01.02 365
9 [Unity] ML-Agent 설치 및 실행 file 졸리운_곰 2019.08.15 621
8 유니티 머신러닝 에이전트 소개 file 졸리운_곰 2019.08.15 694
7 블록체인과 유니티3d : Coding your own blockchain with Unity3D file 졸리운_곰 2019.02.22 536
6 Reflection of Unity C# file 졸리운_곰 2017.06.25 628
5 [유니티 C# 기초 강의] 12. 델리게이트 file 졸리운_곰 2017.06.25 398
4 유니티에서 턴제 게임 구현하기 졸리운_곰 2017.05.09 4621
3 Unity3D 씬 뷰 file 졸리운_곰 2017.04.23 678
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED