[과제] 2주차) Basic Programming 정선용 #34
jeongsunyong
started this conversation in
Blog
Replies: 1 comment 1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
2주차 Basic Programming 과제
제출 브랜치
https://github.com/jeongsunyong/thorvg.example/tree/example/basic-programming
과제 진행 내용
ThorVG 공식 튜토리얼의 Basic Programming 파트를 참고하여 Shape 생성과 Path 작성에 사용되는 기본 Drawing API를 확인했습니다.
학습한 커맨드를 개별 확인할 수 있는 예제를 먼저 작성한 뒤,
해당 API를 Gradient, Scene 및 Effect와 조합한 새로운 그래픽 예제를 제작했습니다.
BasicShapeCommands.cpp: 기본 Drawing Command 확인InteractiveGradientCard.cpp: 기본 Shape를 활용한 응용 그래픽1. Basic Drawing Command 확인
BasicShapeCommands.cpp에서는 튜토리얼에 안내된 커맨드가 실제로 어떤 도형과 Path를 만드는지 한 화면에서 확인할 수 있도록 구성했습니다.appendRect()appendCircle()moveTo()lineTo()cubicTo()close()appendPath()각 결과에는 해당 API의 이름을 함께 표시했습니다. 이를 통해 커맨드별 결과와 Open Path, Closed Path, Fill 및 Stroke의 차이를 비교했습니다.
2. 신규 그래픽 예제 제작
Interactive Gradient Card
InteractiveGradientCard.cpp에서는 기본 Drawing API로 생성한 둥근 사각형을 중심으로 여러 Shape와 Scene을 조합하여 커서에 반응하는 카드 그래픽을 구현했습니다.카드는 Hover 전에는 정적인 형태를 가지고, 카드 위로 커서를 이동하면 내부 Gradient와 테두리의 빛이 커서 위치에 따라 Interactive하게 반응합니다.
Basic Drawing API로 만든 도형과 Gradient, Blend, Blur, Clip 및 Opacity을 결합해 Component(Card)에 대한 그래픽 효과로 구현하면서,
사용자 입력에 따라 Paint 속성을 갱신하는 과정을 구현하여 ThorVG 그래픽을 동적으로 다루는 방법을 예제로 연습하고자 했습니다.
주요 구현 내용
Shape와 Scene을 이용한 카드 구성
카드는 하나의 Shape가 아닌 여러 레이어들을 쌓아 구성했습니다. ( Card, Card Gradient, 광원, 가장자리 음영, Stroke, Text)
카드와 효과 영역 및 테두리는
Shape::appendRect()로 생성했고,fill(),strokeFill(),strokeWidth()를 사용해 각 Shape의 내부와 외곽선을 설정 & 여러 Shape를 Scene에 추가하여 렌더링 순서를 관리했습니다.Gradient
커서를 따라오는 표면 광원
커서 위치에 반응하는 테두리
깊이감과 카드 영역 제한
effectLayer->clip(_clip());실행 방법
All reactions