3.7 KB · 수정 2026-09-09 09:19
목차

26.9.9(수) 세션 — SnapEdit 화면 캡처·주석 편집기 신규 구축 — 기록: [코디]

논의·대안

[페페] 「캡처 프로그램 새로 만들어줘. 윈도우 폼으로. 데이터 서버 저장 등 네트워크 기능 필요없다. 윈도우 안에서만 도는 독립프로그램이면 된다 … 바로 만들어서 사무실PC에 우선 설치해줘」. 작업 도중 두 번 추가 지시 — 「텍스트 입력기능에 오토캐드처럼 텍스트프레임+주석화살. 프레임 포인트 클릭 드래그하면 화살표 생성, 4방향 모두, 오른쪽 클릭 삭제」 · 「가위모양 아이콘 설정하고 작업표시줄에 등록」.

착수 전 그릴링으로 미결 3건을 물어 확정했다 — 캡처 트리거(창 버튼 / 전역 핫키 / 트레이), 출력 경로(클립보드 / PNG / 인쇄), 캡처 범위(영역 드래그 / 전체화면 / 창 단위).

런타임 선택이 이 작업의 architecture 결정이었다. 후보는 ① .NET 8 자체포함 게시(약 70MB, dotnet SDK 필요) ② .NET Framework 4.8 + 윈도우 인박스 csc.exe(약 70KB, SDK·NuGet 0). 사무실PC를 먼저 조사해 .NET 4.8.1(Release 533325) · NanumGothic 설치됨 · 화면 1024×768 을 확인하고 ②로 갔다 — 설치할 런타임도, 배포할 폰트도 없다. 화면 크기는 나중에 툴바 레이아웃을 가르는 근거가 됐다.

구조는 픽셀 레이어와 오브젝트 레이어를 가르는 것이 핵심이었다. 지우개는 「내가 그린 것만」 지워야 하고 (=투명 오버레이 비트맵 1장), 텍스트·화살표는 나중에 우클릭으로 지우고 옮길 수 있어야 한다(=오브젝트 리스트). 합성은 배경 → 오버레이 → 메모 한 방향이고, 화면·클립보드·PNG·인쇄가 렌더 함수 하나를 공유해 WYSIWYG를 보장한다.

결정

산출물·커밋

C:\dev\snapedit\ 신규 — SnapEdit.cs(한 파일) · build.cmd · make_icon.py · scissors.ico(9크기) · install.ps1 · README.md · _uitest.py(코디 검증용). devplan snapedit.html + 허브 카드(projects.json · project_state.json) 등록. 사무실PC(poinimos01) %LOCALAPPDATA%\SnapEdit\ 설치 완료 — MD5 679918B3CD18E99AA7F74842A81CF598 양쪽 일치.

검증 = 자체검사 14/14(--selftest, 미니PC·사무실PC 양쪽) + GUI 실기 4/4(자동 조작 → 스크린샷 육안). 실기에서 캡처·펜·지우개·텍스트·4방향 화살표·우클릭 메뉴·크롭·클립보드 복사를 한 흐름으로 확인했다.

다음

관계