픽셀아트 팀프로젝트
- 이 프로젝트는
pixelart폴더 내의pixart.sln솔루션 파일을 중심으로 구성되어 있습니다. - Visual Studio에서
pixart.sln을 열어 솔루션을 불러옵니다. - Visual Studio에서 디버깅 없이 시작(Ctrl+F5) 을 클릭하여 실행합니다.
사용자는 로컬 이미지를 선택하여 불러올 수 있으며, 내부적으로 픽셀화 처리가 수행됩니다.
지정된 가로 픽셀 수를 기준으로 이미지가 픽셀화되며, 선택된 색상 공간(RGB, HSV, Oklab, YCbCr)을 기준으로 색상을 추출합니다.
각 픽셀은 대표 색상 중 하나로 매핑되며, 이를 기반으로 색상 번호를 갖는 그리드(numberGrid)를 생성하여 도안을 표시합니다.
팔레트에서 색을 직접 지정하거나 대표 색상을 클릭하여 펜 색을 선택할 수 있으며, 펜 굵기(1×1, 3×3, 5×5) 및 분할 색칠 모드(같은 영역 전체 색칠)를 선택할 수 있습니다.
색칠할 셀을 클릭하면 펜 정보를 기반으로 해당 셀을 색칠할 수 있습니다.
대표 색상과 사용자가 색칠한 색상을 비교 패널을 통해 나란히 확인할 수 있습니다.
마우스를 셀 위에 올리면 대표 색상, 색칠된 색상, 유사도 정보를 확인할 수 있습니다.
현재 색상 군집 결과를 기반으로 전체 도안을 자동 색칠할 수 있습니다.
색칠 작업은 기록되어 Ctrl+Z / Ctrl+Shift+Z 단축키로 실행 취소 및 재실행할 수 있습니다.
원본 이미지, 도안, 픽셀 크기, 대표 색상 등의 정보를 .gcsave 파일로 저장할 수 있습니다.
.gcsave 파일을 통해 저장된 도안을 불러오고, 기존 작업을 이어서 수행할 수 있습니다.
KMeans의 색상 클러스터 수(K)를 지정하여 도안의 대표 색상을 결정합니다.
KMeans 알고리즘의 반복 횟수를 설정하여 더 정교한 색상 분할을 할 수 있습니다.
이미지에 대해 선택된 색상 공간(RGB, HSV, Oklab, YCbCr)을 기반으로 색 거리 계산을 수행하며, K와 반복 횟수에 따라 대표 색상과 번호가 결정된 도안을 생성합니다.
쉬움, 중간, 어려움, 매우 어려움 중 선택 가능하며, 난이도가 높아질수록 색상 분할 수가 많아집니다.
선택된 색상 공간의 각 요소(R, G, B 등)를 step 단위로 나누어 색상을 분류하며, 난이도가 높아질수록 step 수가 작아져 더 정밀하게 색상이 분할됩니다.
- 사용자는 호스트(서버) 또는 클라이언트(접속자) 역할을 선택할 수 있습니다.
- 호스트는 내부적으로
TcpListener를 열어 클라이언트 접속을 수락하며, 클라이언트는 IP 주소를 입력하여 호스트에 접속합니다.
- 연결이 성공하면
dualModeColoring폼으로 자동 전환되어 실시간 협업 색칠 화면으로 이동합니다.
- 각 클라이언트는 동일한 이미지를 기준으로 작업하며,
왼쪽에 자신의 도안, 오른쪽에 상대방의 도안이 표시됩니다. - 모든 색칠 작업은 실시간 동기화를 지원합니다.
- 색칠 도중 발생한 모든 그리드 색칠 정보(PaintPacket) 는
NetworkStream을 통해 패킷 전송 및 수신됩니다. - 왼쪽 도안에는 자신의 작업, 오른쪽 도안에는 상대방의 작업이 실시간으로 표시됩니다.
- 연결 실패, 서버 종료 등 네트워크 오류 발생 시 사용자에게 알림 메시지를 띄워 연결 상태 문제를 인식시킵니다.