Phil in the Mirror๋ผ๋ ๊ฒ์ 1์ธ ๊ฐ๋ฐ ํ๊ณ
์ซ๋ฑ ๋งํ ๋ค ๋ด๊ฐ ํ๋ ์์ ๋ค ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๊ณ ์์ด์ ๋ด์ฉ์ ์ฌ๊ธฐ์๋ ๊ณต์ ํ๋ ค๊ณ ํด.
๊ธฐ์ ์ ์ธ ๋ด์ฉ๋ค ์์ฃผ๋ก ์์ฑ๋ ๊ฑฐ๋ผ, ์ธ๋ฆฌ์ผ ์์ง์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด๋คํํ ๋ ๋ณ๋ก ๋์์ ์ ๋ ๋ฏ.
์ด๋ฒ ๋ด์ฉ์ ์ธ๋ฆฌ์ผ ์์ง์์ ๋ด๊ฐ ์ํ๋ UI์ ํํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์
์ ์ ์์ ฏ ๋ธ๋ฃจํ๋ฆฐํธ๊ฐ ์๋ C++ ์ฝ๋ฉ์ ํตํด ์ปค์คํ ์ฌ๋ ์ดํธ ์์ ฏ์ ๋ง๋ค๊ณ ํ์ฉํ ์ฌ๋ก์ผ.
์์ธํ ์ค๋ช ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค ๋ณด๋ ์ฝ๋๊ฐ ๋ง์์ ์ฝ๊ธฐ ์ด๋ ค์ธ ์๋.. ์ดํด์ข
๊ธ๊ณ ๋ชจ๋ฐ์ผ์์๋ ์ฝ๋๊ฐ ์ ๋๋ก ์ ๋ณด์ด๋ค. ์ด๊ฑฐ ๊ด๋ จํด์ ๋ชจ๋ฐ์ผ๋ ์ ๋ณด์ผ๋งํ ์ฝ๋ html ํฌ๋งคํฐ ์ถ์ฒํด์ค ์ธ๋ถ์ด ์์ ๋๊ธ์ข
์ผ๋จ carbon์ผ๋ก ๋์ฒดํด์ ์ฌ๋ฆผ
===============================================
ย Phil in the Mirror์์๋ ์ธ๋ฆฌ์ผ ์์ง 5์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์๋ UI ์์ ๋ช๋ช๊ฐ์ง๊ฐ ํ์ํ๋๋ฐ์. ๊ทธ๋ฌํ ์์๋ค์ ์ด๋ป๊ฒ ๋ง๋ค์ด์ ํด๊ฒฐํ๋์ง์ ๋ํด์ ๊ธฐ์ ํด๋ณผ๊น ํฉ๋๋ค. ๋จ์ํ ์ ์ ์์ ฏ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ด์ฉํ ์๋ํฐ ์์ค์์ ํด๊ฒฐํ ์๋ ์์์ง๋ง ์ฝ๋ ์์ค์์ ์ด๋ค์ ์ ์ ํ ๊ตฌํํด์, ์ ์ฐํจ๊ณผ ์ฑ๋ฅ์ ์ด์ ๋ฐ ์ฌ์ฉ์ฑ์ ์ฑ๊ธด ์ฌ๋ก๋ฅผ ๊ณต์ ํฉ๋๋ค.
ย Phil in the Mirror์์ ํ๋ ์ด์ด๋ ๋ค์ํ ๋ฌธ์๋ค์ ์ฝ๊ณ ์ฌ๊ฑด๋ค์ ๊ด๊ณ๋ฅผ ํ์ ํ์ฌ ์จ๊ฒจ์ง ๋ ์ง๋ค์ ์ถ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ค์ํ ์ ๋ณด๋ค์ ๊ฐ๋ ค๋๊ณ , ์ด๋ค์ ์ถ๋ฆฌํ ์ ์๊ฒ ํด์ผ ํ์ต๋๋ค. ๋ค๋ง ์ฌ๊ธฐ์ ๊ณ ๋ ค๋์ด์ผ ํ ์ฌํญ์ด ์์๋๋ฐ์. ๋ฐ๋ก ๋ก์ปฌ๋ผ์ด์ ์ด์ ์ ๋๋ค. ํ ์คํธ ์์์ ๊ฐ๋ ค์ง ๋ถ๋ถ๋ค์ ์ด๋ค ์ธ์ด์ด๋๋์ ๋ฐ๋ผ์ ์์น๊ฐ ๋ฌ๋ผ์ง๊ณ , ๊ธธ์ด๋ ๋ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํด๊ฒฐํ ํ์๊ฐ ์์์ต๋๋ค.
| ํ ์คํธ์ ์ผ๋ถ๊ฐ ๊ฒ์ ์์ผ๋ก ๊ฐ๋ ค์ ธ ์์ต๋๋ค. |
ย ๋จ์ํ U+2588(โ) ๋ฌธ์๋ฅผ ์ด์ฉํ ์๋ ์์์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค: 1) ์ธ์ด๋ง๋ค ๊ธ์์ ๊ฐ์๊ฐ ์์ดํ๋ฐ, ์ ๋ง๋ก ๋ฌธ๋งฅ ์์ ๋จ์ด๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ๋ ค์ง๋ ๋๋์ ์ฐ์ถํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ๊ฐ๋ น "์๊ฐ๋ฝ ์ ๋จ ์ฌ๊ณ "์ "finger amputation accident"๋ ๊ธ์์์ ์ฐจ์ด๊ฐ ์ปค์, ์ด๋ ํ์ชฝ ์ธ์ด์์ ์ด์ํ๊ฒ ๋ณด์ด๋ ์ธก๋ฉด์ด ์์ต๋๋ค. 2) ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด ์ด์ด์ง๋ ๋๋์ด ํ์ํ์ต๋๋ค. (โโโ์ฒ๋ผ ์ด์ด์ ์จ๋ณด๋ฉด ์ฌ์ด์ ์ ๋งคํ ๊ณต๋ฐฑ์ด ๋ณด์ ๋๋ค)
ย ๋ฐ๋ผ์ ํ ์คํธ๊ฐ ๋ ๋๋ง๋ ๋, ํด๋น ์์ญ ์์ ๊ฒ์ ์ ๋ฐ์ค๋ฅผ ๊ทธ๋ ค๋ผ ํ์๊ฐ ์์์ต๋๋ค. ์ด๋ RichTextBlock์ ๊ธฐ๋ฅ์ ํ์ฅํ์ฌ ๊ตฌํํ ์ ์์์ต๋๋ค. ์ ํํ๋, Decorator๋ฅผ ๋ง๋๋ ๊ฒ์ด์ฃ . RichTextBlock์ Decorator๋ฅผ ์ถ๊ฐํ ์ ์๋๋ฐ, ์ด๋ฌํ Decorator๋ค์ RichTextBlock์ ๋ด์ฉ์ ์ ๊ทผํ์ฌ ๋ณธ์ธ์ด ๊พธ๋ฐ ์ ์๋ ๊ฒ๋ค์ ๊พธ๋ฏธ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ "<redact>content</>" ๋ฐ์๋ก ๊ฐ์ธ์ ธ์๋ ๋ด์ฉ์ RedactDecorator๊ฐ ์ ๊ทผํ์ฌ ๊ฒ์ ์ ๋ฐ์ค๋ฅผ ๊ทธ๋ ค๋ด๋ ํํ๋ก ๊ตฌํํ์์ต๋๋ค.
์์ ฏ์ ์ด์ฉํ ๊ฐ๋ฆฌ๊ธฐ |
ย ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ์ ์์๋๋ฐ์. ์ฒซ ๋ฒ์งธ๋ ํด๋น ์์น์ SBox ์์ ฏ์ ์ ์ ํ ์์ฑํด์ ๊ฐ๋ฆฌ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ์ฒ์์ผ๋ก ์ ๊ทผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ย RichTextBlock์์ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ ๋, Run์ด๋ผ๋ ๋จ์๋ก ๋๋์ด์ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ํ ์คํธ์ ๊ธธ์ด๊ฐ ๊ธธ๋ค๊ฑฐ๋ ํด์ ์ค๋ฐ๊ฟ ๋ฑ์ด ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๋ฌํ ๊ฒ๋ค๋ก๋ถํฐ ์์ ๋ก์ด ์ต์ํ์ ๋ ๋ ๋จ์๋ฅผ ๊ฐ๋ ๊ฒ์ด์ฃ (์๋ฅผ ๋ค๋ฉด, ๋จ์ด ํ๋). Supports()๋ ํด๋น Decorator๊ฐ ์ด๋ค ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. Create()์์๋ Supports()์์ true๋ฅผ ๋ฐํํ Run์ด ์ธ์๋ก ๋์ด์ค๊ฒ ๋๊ณ , Decorator ํด๋์ค๋ค์ ์ฃผ์ด์ง Run๋ค์ ๋ํด์ ์ถ๊ฐ์ ์ธ ํ์๋ฅผ ํ ์ ์์ต๋๋ค.ย
ย Run ์ ๋ณด๋ฅผ ์ด์ฉํด์, ์ด๋ค TextStyle์ ์ ์ฉํด์ผ ํ ์ง ๊ฒฐ์ ํ๊ณ , FontMeasure๋ฅผ ์ด์ฉํด์ ํด๋น Run์ด ์ด๋์ ๋์ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ณ ์ด๋ ์์น์ ๋ ๋๋ง๋ ์ง ๊ณ์ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํด์ ๊ฒ์ ์์ Border๋ฅผ ์์์ผ๋ก ๊ฐ๋ SBox ์์ ฏ์ ์์ฑํ์ฌ ํด๋น ํ ์คํธ๋ฅผ ๊ฐ๋ฆฌ๋ ๊ฒ์ ๋๋ค.ย
ย ํ์ง๋ง ์ด๋ ์ด์จ๊ฑฐ๋ ์๋ก์ด ์์ ฏ์ ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์ฝ๊ฐ์ ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค. ์ ์ด์ FSlateTextRun์์ 'ํ ์คํธ๋ฅผ ๋ ๋๋ง'ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฏ๋ก, FSlateTextRun์ ํ์ฅํ์ฌ 'ํ ์คํธ๋ฅผ ๋ ๋๋งํ์ง ์๊ณ ๊ฒ์ ์ ๋ฐ์ค๋ฅผ ๋ ๋๋ง'ํ๊ฒ๋ ํ๋ฉด ๋ ๊ฐ๊ฒฐํ ๊ตฌํ์ด ๋ ๊ฒ์ ๋๋ค.
ย ๊ธฐ์กด์ RedactDecorator๋ ๊ฐ๋ ค์ ธ์ผ ํ ํ ์คํธ์ Run์ ๋ํด FSlateWidgetRun์ ๋ฐํํ๊ณ , ํด๋น ์์ ฏ์ ํ ์คํธ์ ๋ฐ์ค๋ฅผ ๋ฃ์์ต๋๋ค. ๋์ ์, FRedactTextRun์ ๋ง๋ค์ด์ ๋ฐํํ๋๋ก ํ๊ณ , FRedactTextRun์ ๊ธ์์ ๊ด๊ณ์์ด ๊ทธ ํฌ๊ธฐ๋งํผ ๋จ์ํ ๊ฒ์ ์ ์์๋ฅผ ๋ ๋๋งํ๋๋ก ๊ฐ์ ํ๋ฉด, ํ ์คํธ๋ฅผ ๋ ๋๋งํ๋๊ฒ๊ณผ ๋ณตํฉ ์์ ฏ์ ๋ ๋๋งํ๋ ์ค๋ฒํค๋ ๋ฑ์ ์์จ ์ ์์ ๊ฒ์ ๋๋ค:
ย RedactDecorator๋ ๋ค์๊ณผ ๊ฐ์์ง ๊ฒ์ ๋๋ค:
ย ์ด๋ฐ ์์ ๊ตฌํ์ "<redact>์์ฃผ ๊ธด ๋ฌธ์ฅ์ผ๋ก ์ด๋ฃจ์ด์ง ํ ์คํธ</>" ๋ฐ์์ฒ๋ผ ๊ตฌ์ฑ๋ ์ํฉ์์๋ ์ด์ ์ด ์์์ต๋๋ค. ์๋ํ๋ฉด, SBox๋ฅผ ์ง์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ์๋ ์ด์จ๊ฑฐ๋ ํ๋์ SlateWidgetRun์ผ๋ก ๊ตฌ์ฑ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋จ์ด๋ก ๊ตฌ์ฑ๋์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋ฐ๊ฟ์ด ์ด๋ฃจ์ด์ง์ง ์์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง FRedactTextRun์ FSlateTextRun์ ์์๋ฐ๊ธฐ ๋๋ฌธ์, ๋ด๋ถ์ ์ผ๋ก ๋จ์ด ๋ณ wrapping์ด ์ด๋ฃจ์ด์ง๊ณ ์ด์ ๋ํ ์ด์ ์ ์ป์ ์ ์์์ต๋๋ค. ๋ค์์ฒ๋ผ ์์ฐ์ค๋ฝ๊ฒ ์ค๋ฐ๊ฟ์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ์ ํ์ธํ์ธ์:
| ์์ฃผ ๊ธด ๊ฒ์ด ์์์ ๊ฒฝ์ฐ ์์ฐ์ค๋ฝ๊ฒ ์ค๋ฐ๊ฟ์ด ์ด๋ฃจ์ด์ง๋๋ค. |
ย Phil in the Mirror์์๋ ๋ฌธ์๋ฅผ ์คํฌ๋กคํ๋ฉด์ ์ฝ์ ์ ์์ด์ผ ํ๋๋ฐ์. ์ ๋ ์คํฌ๋กค์ ์์น๋ฅผ ํ์ํ๋ ๋ง๋(thumb)๊ฐ ์์ฃผ ์๊ณ ๊ณ ์ ๋ ํฌ๊ธฐ์์ผ๋ฉด ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ๋ฆฌ์ผ ์์ง์์ ์ ๊ณตํ๋ ์คํฌ๋กค ์์ ฏ์์๋ ๋ง๋์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ ์ต์ ์ด ์์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ UI๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด์ค ํ์๊ฐ ์์์ต๋๋ค.
| ์ฐ์ธก ์ธ๋์ผ์ดํฐ์์ ํ์์ ์์๊ฐ์ด ์์ ์คํฌ๋กค ๋ง๋๋ฅผ ์ํ์ต๋๋ค. |
ย ์ฐ์ ์ปค์คํ ์ฌ๋ ์ดํธ ์์ ฏ์ ์ฌ์ฉํ์ง ์๊ณ ๊ณ ๋ คํ ์ ์๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: 1) ์ธ๋ฆฌ์ผ ์์ง์ ๊ธฐ๋ณธ ์คํฌ๋กค ๋ฐ๋ฅผ ์จ๊ธด ๋ค 2) ์ ๊ฐ ์ํ๋ ํํ์ ์คํฌ๋กค ๋ฐ ํํ์ ์์ ฏ๋ค์ ์ ์กฐํฉํด์ ๋ฐฐ์นํ๊ณ 3) ์คํฌ๋กค์ ๋ณํ๋ฅผ ๋ฐ๋ ๋ฆฌ์ค๋๋ฅผ ๋ง๋ค์ด ํด๋น ์์น์ ๋ฐ๋ผ ๋ง๋ ์์น๋ฅผ ์ง์ ์กฐ์ ํด์ฃผ๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ์ด๋ ๊ฒ ํด๋ ํ ์ ์์ง๋ง, ์คํฌ๋กค ์์ ฏ๊ณผ ์ธ๋์ผ์ดํฐ๋ฅผ ์์ ฏ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ด์ฉํด ํ์ ํ๊ฒ ๋ฌถ๋ ๊ฒ์ด ์ฝ๊ฐ์ ๊ฑฑ์ ์ด ๋์์ต๋๋ค. ์ ๋ ์ธ๋ฆฌ์ผ ์์ง ๊ฒฝํ๋ ๋ถ์กฑํ๊ณ , ์ฐจํ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋ ์ง ๋ชฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
ย ๋ฐ๋ผ์ ์คํฌ๋กค ์์ ฏ๊ณผ ๋์ผํ์ง๋ง ๊ณ ์ ๋ ๋ง๋ ๊ธธ์ด๋ฅผ ๊ฐ๋ ์ปค์คํ ์ฌ๋ ์ดํธ ์์ ฏ์ ๋ง๋ค์ด ํด๊ฒฐํ๊ธฐ๋ก ํ์์ต๋๋ค. ์ฐ์ , FixedThumbScrollBox๋ผ๋ ์์ ฏ์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. ์ด๋ ๋ณ๋ค๋ฅธ ์์ ์ ์๋๊ณ , ๊ทธ๋ฅ ์์ ฏ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ C++ ์์ค์ผ๋ก ์ฎ๊ฒจ๋์ ๊ฒ์ ๊ฐ๊น์ต๋๋ค. UFixedThumbScrollBox๋ ๋จ์ํ ์์ชฝ์ SScrollBox๋ฅผ ๋ง๋ค๊ณ , ์์ ๊ฐ์ข ๋ฒํผ๊ณผ FixedThumbScrollBar๊ฐ ๋ฐฐ์น๋๋ ๋ณตํฉ ์์ ฏ์ ๋๋ค.
| ๋๋ต์ ์ธ ์์ ฏ์ ๊ตฌ์ฑ. ์ต์์์๋ HorizontalBox๊ฐ, ๊ทธ ํ์์๋ ScrollBox์ VerticalBox, VerticalBox ํ์์๋ UpButton๊ณผ FixedThumbScrollBar, DownButton์ด ์กด์ฌํฉ๋๋ค. |
ย ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ย ์ฌ๊ธฐ์ ํต์ฌ์ SScrollBox๋ฅผ ๋ฐฐ์นํ ๋ค, SScrollBox์ ๋ณํ๋ฅผ ์ถ์ ํ๋ ์ปค์คํ ScrollBar๋ฅผ ๊ตฌํํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ SFixedThumbScrollBar๋ก ๊ตฌํ๋์์ผ๋ฉฐ, SScrollBar๋ฅผ ์์๋ฐ์ต๋๋ค. ๋คํํ, SScrollBox์๋ ExternalScrollBar๋ผ๋ ์ธ์๊ฐ ์์ด ์ด๋ฅผ ์ด์ฉํ์ฌ ์ธ์ฅ ์คํฌ๋กค ๋ง๋๋ฅผ ์์ฝ๊ฒ ๊ตฌํํ ์ ์์์ต๋๋ค.ย
ย SFixedThumbScrollBar์์๋ ํฐ ๊ตฌํ์ ๋ณํ๊ฐ ์์์ต๋๋ค. ๋จ์ํ ๊ทธ๋ฆฌ๋ ๋ฐฉ์๋ง ๋ณ๊ฒฝํ๋ฉด ๋์๊ธฐ ๋๋ฌธ์ด์ฃ . ๋ฐ๋ผ์ 1) FixedThumbSize๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฉค๋ฒ๋ค์ ๋ถ๋ชจ์ ์ด๊ธฐํ๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ , 2) OnPaint์์ MakeBox๋ฅผ ์ด์ฉํด ์ ์ ํ ์์น์ ๋ง๋๋ฅผ ๊ทธ๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด ๋์์ต๋๋ค. ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
ย ์ ๋ Vertical๋ก๋ง ์ ๋๋ก ๋์ํ๋ฉด ๋์๊ธฐ ๋๋ฌธ์, Horizontal ๋ฐฉํฅ์ ๋ํด์ ๋ณ๋์ ํ ์คํธ๋ฅผ ๊ฑฐ์น์ง๋ ์์์ต๋๋ค. ํ์ฌํผ, ๋ง๋์ ์์น๋ ์คํฌ๋กค์ ์๋์ ์ธ ์์น(0์ด๋ฉด ๋งจ ์, 1์ด๋ฉด ๋งจ ์๋)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์์ ์ ์ก์ผ๋ฉด ๋ ๊ฒ์ ๋๋ค. ์ฝ๋์์๋ ThumbTop์ ๊ณ์ฐํด์ผ ํ์ผ๋ฏ๋ก, ๋ง๋์ ์ ์ฒด ๊ธธ์ด์์ FixedThumbSize๋งํผ์ ๋บ ๋ค์ ์๋์ ์ธ ์์น๋ฅผ ์ ์ฉํ์์์ ์ ์ํ์ธ์.
ย ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ณ ์ ๋ ๊ธธ์ด์ ์์ ๋ง๋๊ฐ ์คํฌ๋กค์ ์์น์ ๋ฐ๋ผ ์ ์ ํ ๋ณํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค:
3) Grid Table Decorator
ย ์ธ๋ฆฌ์ผ ์์ง์์๋ ๊ฒฉ์์ ํํ๋ก ๋ ์ด์์์ ๊ตฌ์ฑํ ์ ์๋ GridPanel์ ์ ๊ณตํ๋๋ฐ์. ์ ๋ ๋ฌธ์๋ค์ ์ฐ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ์ด์ฉํด์ ํ ๋ฑ์ ์ฝ๊ฒ ๊ทธ๋ ค๋ด๊ณ ์ถ์์ต๋๋ค. ํ ๋ ์ด์์ ๋์์ธ์ ๋ณ๋๋ก ๋ง๋ ๋ค ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ๊ณ , ๊ฐ ์์น์ TextBlock์ ๋ฐฐ์นํ๋ ๊ฒ์ ์ ์ฐํ์ง ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ ํ์ ๋ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ํ ๋, ํ ๋ ์ด์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ด์ฃ . ๋ํ, ๋ก์ปฌ๋ผ์ด์ ์ด์ ์ ๊ณ ๋ คํด TextBlock์ ์ฌ์ด์ฆ์๋ ๋ง์ ์ ๊ฒฝ์ ์จ์ผํ์ ๊ฒ์ ๋๋ค. ์ ์ฐจ์ ์ธ ๋์์ธ์ด ํ์ํ ์๊ฐ์ด์์ฃ .
ย ํนํ, GridPanel์ ์ฌ์ฉํ๋ฉด์๋ ๋ช๋ช๊ฐ์ง ๋์์ธ ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ ์ ์์ด์ผ ํ์ต๋๋ค. ๊ฐ ํ ํญ๋ชฉ์ ๊ตฌ๋ถํ๋ ๊ฒฝ๊ณ์ ์ ๊ทธ๋ฆด ์ ์์ด์ผ ํ๊ณ , ํน์ ํ ๋ค์์๋ ๊ตฌ๋ถ์ ์ ๊ทธ๋ฆด ์๋ ์์ด์ผ ํ์ต๋๋ค. ๋ํ ์ธ๊ณฝ์ ์ ๊ทธ๋ฆฌ์ง ์๊ณ ๋ด๋ถ์ ๋ง ๊ทธ๋ฆด ์๋ ์์ด์ผ ํ์ต๋๋ค. ๋ค์ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ์ธ์:
| ํค๋ ๋ค์์ ํ์ ๊ตต์ ์ ์ผ๋ก ๊ทธ๋ ค์ ธ์๊ณ , ํ์ ์ธ๊ณฝ์ ์ ๊ทธ๋ ค์ ธ์์ง ์์ต๋๋ค. |
ย ์ ์ฐจ์ ์ธ ๋์์ธ์ ์ฌ์ฉํ์ง ์๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์, GridPanel ์์ ๋ค์ Border๋ฅผ ๋ง๋ค๊ณ Border ์์ TextBlock์ ์ฝ์ ํ ๋ค Border๋ฅผ ์ด์ฉํด์ ๊ฐ ์ ์ ๋์์ธ์ ํด๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด๋ ํ์ ๋ชจ๋ ์นธ์๋ค๊ฐ ์ํํด์ผ ํ๋ ์์ ๋ค์ด๊ณ , ๊ตฌ๋ถ์ ์ ๊ทธ๋ฆฐ๋ค๊ฑฐ๋ ์ธ๊ณฝ์ ์ ๊ทธ๋ฆฌ์ง ์๋ ๋ฑ์ ๋์์ธ์ ํ๊ธฐ ์ํด์๋ ์กฐ๊ธ ๋ ๋ณต์กํ ์์ ์ด ์๊ตฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๋ฐฉ๋ฒ ๋์ , GridTableDecorator๋ผ๋ ์์ ฏ์ ๋ง๋ค์ด ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ํ๋ฅผ ๊พธ๋ฉฐ์ฃผ๋๋ก ํ์ต๋๋ค.
| GridTableDecorator ํ์์ GridTable์ GridTableDecorator์ ์ํด์ ๊พธ๋ฉฐ์ง๊ฒ ๋ฉ๋๋ค. |
ย ์ด๋ ๊ฒ ์ฐพ์์ง ํ๊ณผ ์ด์ ๊ฒฝ๊ณ๋ฅผ ์ด์ฉํ์ฌ ์ ์ ๊ทธ๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
ย ์ ์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ๋จ์ํ MakeLines๋ฅผ ์ด์ฉํด์ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๊ณ , ๋ค๋ง ์ ์ด ๊ทธ๋ ค์ง๋ ์์น๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์์ ์ธ๋ฆฌ์ผ ์์ง์ด UI ํธ๋์คํผ์ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํด ์ ๋ฅผ ๋จน์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก๋ GridTableDecorator๋ฅผ ์ด์ฉํด์ ์์ฝ๊ฒ GridTable์ ๊พธ๋ฏธ๊ณ ์ ์ฐํ ํ ๋์์ธ์ ๋ง๋ค ์ ์๊ฒ ๋์์ต๋๋ค.
๋.
์ธ๋ฆฌ์ผ๋จ์ ๊ฐ์ถ์ผ ๊ทผ๋ฐ ๊ฒ์ ๊น๋ํ๊ณ ๊ด์ฐฎ์๋ณด์ด๋๋ฐ ์ ์ํ๋ ธ์๊น..
๊ทธ๊ฑด ๋น์ ์ด ์ฌ์ฃผ์ง ์์์..
์ด์ผ ์ด๊ฑด ๊ฑฐ์ mfc์์ ์ฝ๋ฉ๋๋ ๋๋ค
๋ ์ด๊ฑฐ ์ง์ง ์ฌ๋ฐ๋๋ฐ ์ฐจ๊ธฐ์ ๊ฐ๋ฐํ๊ณ ์๋ ๊ฑฐ ๋ ์๋์