ChatGPT와 함께한 C# WinForms 도형 편집 툴 만들기

오늘 오후에 잠깐 시간을 내어 GPT로 도형 편집 툴을 만들어 봤는데,
생각보다 퀄리티가 훌륭했고, 제가 원하는 부분을 정확히 구현해 줬습니다.

예전에도 몇 번 시도를 해봤을 땐 단편적인 기능만 나왔는데,
이번엔 요구사항을 상세히 전달하니 원하는 로직을 제대로 뽑아내는 느낌이네요.

아래에는 GPT가 생성해 준 코드와 해당 코드에 대한 간략한 설명을 정리했습니다.
(설명도 GPT로…;; )

이제는 AI 기능에 대해서 적극 활용하는 방향으로 생각이 많이 기울었습니다…


GPT가 작성해준 글귀

1. 들어가며

최근 ChatGPT와 같은 대규모 언어 모델(LLM, Large Language Model)이 대중화되면서, 프로그래밍 작업에서 많은 도움을 받을 수 있게 되었습니다. 특히, “어떤 기능을 구현해야 하는지” 막연하게 아이디어만 있을 때, ChatGPT에 질문하여 구현 방안을 구체화하고 코드를 자동으로 생성해 보는 경험은 생각보다 훨씬 편리하고 유익합니다.

이 글에서는, ChatGPT를 활용해 “C# WinForms로 도형 편집 툴”을 만드는 과정을 간단히 공유합니다.
원래라면 UI 구성부터 이벤트 핸들링, 리사이즈 로직, 폴리곤 정점 편집 등 꽤 복잡하게 접근해야 하지만, ChatGPT의 도움으로 아이디어 → 코드 과정을 빠르게 진행할 수 있었습니다.


2. 어떤 기능을 만들고 싶었나?

처음에는 단순히 WinForms에서 사각형(Rectangle), 원(Circle), 다각형(Polygon)을 그리고, 마우스로 이동하거나 크기를 조절하는 기능을 구현하려 했습니다. 하지만 개발을 진행하다 보니 점차 기능이 늘어났죠.

  1. Rectangle, Circle, Ellipse, Polygon 추가
  2. 마우스 드래그로 이동 (Canvas 자체도 이동)
  3. 도형 리사이즈 (Circle이면 원형 유지, Polygon 정점 편집)
  4. Zoom(확대/축소) (버튼 + 마우스 휠)
  5. Grid(격자) 표시
  6. 도형 복제 (Ctrl+드래그)
  7. 선택된 도형 삭제

혼자 일일이 작성하려면, 특히 폴리곤 정점 편집 부분이나 원형 유지 로직, 좌표 뒤집힘(swap) 처리 등이 귀찮을 수 있습니다. 그런데 ChatGPT에게 “어떤 기능을 구현해야 하는지, 어떤 식으로 코드를 짜면 좋을지” 묻자, 순식간에 꽤 완성도 높은 예시 코드를 생성해 줬습니다.


3. ChatGPT에게 물어본 내용

제가 ChatGPT에게 요청했던(프롬프트) 내용은 대략 이렇습니다.

  • “C# WinForms에서 사각형, 원, 타원, 다각형을 그리고, 마우스로 이동/리사이즈/복사할 수 있는 샘플 코드를 만들어줘.”
  • “폴리곤(Polygon) 정점도 마우스로 움직이고 싶어.”
  • “Circle은 항상 정원으로 리사이즈되도록 해줘.”
  • “Grid도 그리고 싶어. 패널 크기를 기준으로 일정 분할해서 점선 그려줘.”
  • “리사이즈 시 좌표가 뒤집히면 (Left>Right)인 경우 swap 처리도 해줘.”

이처럼 요구사항을 구체적으로 나열해 주면, ChatGPT가 가능하면 스스로 로직을 짜거나, 기존 예시를 응용해 코드를 제시해 줍니다.
이후 제가 코드를 테스트해 보고, 필요하면 “여기서 Circle 부분만 조금 다르게 해줘”와 같이 다시 피드백을 넣어 더 맞춤형으로 발전시켰습니다.


4. ChatGPT가 제공한 코드 예시

ChatGPT가 제시해 준 코드는 대체로 다음과 같은 구조로 되어 있습니다.

  1. ShapeType enum: Rectangle, Circle, Ellipse, Polygon
  2. Shape 클래스: Polygon의 정점(PointF 리스트)와, Rectangle/Circle/Ellipse 용 Bounds를 함께 관리
  3. DrawingPanel: WinForms Panel 상속. 여기서 모든 도형을 그리고, 마우스 이벤트 처리
  • OnPaint에서 도형/그리드/핸들을 그림
  • MouseDown / MouseMove / MouseUp 이벤트로 이동·리사이즈 로직
  • Zoom(버튼, 휠)과 Pan(Ctrl+드래그, 우클릭 드래그) 지원
  1. MainForm: WinForms 기본 폼. 버튼(도형 추가, 줌, 삭제 등)을 배치하고 DrawingPanel을 넣음

아래처럼 ChatGPT가 만들어준 코드를 살짝 수정해 붙이기만 하면,
금방 ‘도형 편집 툴’ 형태의 프로그램이 완성됩니다.

csharp

코드 복사

private void ResizeShape(Shape shape, float dx, float dy, ResizeHandleType handle)
{
    // 예시: Circle이면 정원 유지
    // 리사이즈 시 Left > Right 등으로 뒤집히면 swap
    // ...
}

위와 같은 식으로, 귀찮은 좌표/리사이즈 로직이 이미 구현되어 있죠.


5. 직접 테스트해 본 결과

실행해 보니 다음과 같은 작업이 매우 간단해졌습니다.

  • “Add Rectangle” 버튼 → 사각형 생성
  • 마우스로 사각형 선택 후, 모서리(핸들)를 드래그하면 사이즈 조절
  • Circle(원)의 경우, 가로/세로가 맞춰지는 정원 유지
  • Polygon 정점 편집: 각 점에 작은 사각형이 뜨고, 이를 드래그하면 해당 꼭짓점만 이동
  • 마우스 휠을 굴리면 커서 위치 기준으로 Zoom In/Out
  • 우클릭 드래그로 화면 전체 이동(Pan)
  • Grid(격자)가 표시되어 있어 대략적인 위치나 크기를 가늠하기도 편리

정말로 ChatGPT가 많은 부분을 자동화해 준 덕분에, 저는 거의 “코드 실행 + 테스트 + 약간의 수정” 정도만 진행했습니다.


6. 마무리 및 활용 팁

ChatGPT를 이용해 코드를 처음부터 끝까지 완벽히 생성하는 것은 어려울 수 있지만,
특정 기능(예: WinForms에서 마우스 드래그로 리사이즈, 폴리곤 정점 편집)을 빠르게 시도할 때,
복잡한 구문을 대신 작성해 주는 데에 큰 도움을 받을 수 있습니다.

  • Tip 1: 요구사항을 구체적으로 나열하면 ChatGPT가 더 정확한 코드를 제시합니다.
  • Tip 2: ChatGPT가 만든 코드를 바로 프로덕션에 쓰기보다는, 테스트리뷰 과정을 꼭 거치세요.
  • Tip 3: 스스로 구현해보면서 이해해야 궁극적으로 역량이 늘지만, ChatGPT가 코딩 부스터 역할을 해 주는 건 분명합니다.

그렇게 해서, 우리는 짧은 시간 안에 “스케치 수준의 아이디어”를 “꽤 쓸 만한 형태의 코드”로 완성해 볼 수 있었습니다.

“ChatGPT 덕분에 도형 편집 프로그램을 훨씬 빠르게 만들었다!”
라고 요약할 수 있겠네요.

여러분도 ChatGPT와 함께 재미있는 프로젝트를 시도해 보세요!


참고

  • 본문에서 사용된 코드는 ChatGPT와의 대화 과정을 통해 얻은 예시를 기반으로 합니다.
  • UI/UX나 설계적인 부분은 최소 예제로써, 보다 세련된 디자인이나 **다양한 편의 기능(Undo/Redo, 레이어, 그룹화 등)**을 원하시면 코드를 더 확장하면 됩니다.
  • C# WinForms뿐만 아니라, WPF나 다른 프레임워크에서도 유사한 방식으로 ChatGPT에게 도움을 받을 수 있습니다.

끝맺으며

이상으로, ChatGPT를 사용해 WinForms 도형 편집 툴을 신속하게 만들어본 경험을 나누었습니다.
코드를 직접 100% 작성할 수도 있지만, ChatGPT를 통해 빠르게 골격을 잡고, 부족한 부분을 조각조각 보완하는 과정은 꽤 생산적이었습니다.

여러분도 ChatGPT와 함께 개발 생산성을 끌어올려보세요!

코드를 추가하니 글자 수 제한으로 인하여 깃헙으로 공유합니다.

4 Likes

단점을 찾는데 그리 오랜시간이 걸리지는 않았네요

  1. 일정 작업 이상(복잡도 상승)이 되니 원하는 기능이 제대로 나오지를 않네요.

  2. 한번 동작이 제대로 안되기 시작하니요청을 해도 계속 이상하게 답변하는 것으로 보이고, 원하는 방향으로 안되니 답답함이 많이 발생합니다.

그래도 예전보다는 많이 좋아졌고,
역시 작은 단위의 행동 및 행위에 대해서 유리하게 작동하는 것으로 보입니다.