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를 보장한다.
결정
- 런타임 = .NET Framework 4.8 + 인박스 csc.exe, 산출물
SnapEdit.exe파일 1개(70,144B). deploy 부담 0. - 캡처 트리거 = 프로그램 창의 버튼(상주 프로세스 0·트레이 없음) · 범위 = 영역 드래그만 · 출력 = 복사·PNG·인쇄 3종.
- 소스는 한 파일(
SnapEdit.cs). 파일을 쪼개도 얻는 게 없다. - 툴바는 2줄. 사무실PC 1024×768에서 한 줄이면 「저장·인쇄」가 오버플로로 숨는다(실측).
- 작업 표시줄 고정은 사람 손 1회로 남긴다 — 아래 「다음」 참조.
산출물·커밋
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방향 화살표·우클릭 메뉴·크롭·클립보드 복사를 한 흐름으로 확인했다.
다음
- [페페] 바탕화면 SnapEdit 아이콘 우클릭 → 「작업 표시줄에 고정」 1회. 윈도우10/11이 그 셸 동사를
COM 목록에서 빼버려 스크립트로 누를 수 없다(사무실PC
notepad.exeverb 목록을 실제로 뽑아 확인). 레지스트리Taskband직접 조작은 기존 핀이 초기화될 위험이 있어 쓰지 않았다. - [페페] 실사용 후 불편한 점 — 특히 1024×768에서 툴바 2줄이 답답한지.
관계
- 주제 그룹: snapedit
- 관련 문서: cody-rules, background-ops