Seungwoo Hong
Front-end developer
for beginner
@BOLD9
Seungwoo Hong
2023.10.06
Raster Graphics
Raster๋ ์ด๋ฏธ์ง๋ฅผ ํํํ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์ฌ๊ฐํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์ด๋ฏธ์ง๋ฅผ ํํํ๋ค. ํ๋์ ์ฌ๊ฐํ์๋ RGB(Sub pixcel)๋ก ๊ตฌ์ฑ๋๋ ์ปฌ๋ฌ๊ฐ ์ฑ์์ง Element ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ ์ด๊ฒ์ Pixel์ด๋ผ ํ๋ค. ๋ํ pixcel๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ๋ฅผ Bitmap์ด๋ผ ํ๋ค.
Raster Graphics - bitmap
Binary image
bitmap์ด bit์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ pexel์ด ํํ๋ ๋ bit ์ด๋ก ํํ๋๊ธฐ ๋๋ฌธ์ด๋ค. Binary image ์ด๋ฏธ์ง์์๋ ๊ฐ pexcel์ 1bit๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๋ฐ์(1), ์ด๋์(0)์ผ๋ก ํํ๋๋ค.
Raster Graphics - bitmap
gray-scale image
ํ๋ฐฑ ์ด๋ฏธ์ง๋ ๋จ์ํ ์ด๋์, ๋ฐ์์ด ์๋ ๋ฐ๊ธฐ์ ์ ๋๋ฅผ ํํํด์ผํ๋๋ฐ 8bit=1byte=255, 0~255 ์ฌ์ด ๊ฐ์ผ๋ก ๋ฐ๊ธฐ๋ฅผ ํํํ๋ค. ์ฆ, 1pexel ๋น 1byte๋ก ํํ๋๋ ๊ฒ์ด๋ค.
Raster Graphics - bitmap
Color image
์ปฌ๋ฌ ์ด๋ฏธ์ง๋ ์์ ํํํ๊ธฐ ์ํด pexel ์์ 3๊ฐ์ subpixce(8bit)l์ ๊ฐ๋๋ค.
์ด๋ 3๊ฐ์ subpixel์ ๊ฐ๊ฐ ๋น์ ์ผ์์์ธ Red, Green, Blue๋ฅผ ํํํ๋ค. 3๊ฐ์ subpixcel์ ํ๋์ true color๋ฅผ ๋ง๋ ๋ค.
Raster Graphics
๋ํ์ ์ธ raster ๋ฐฉ์์ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง ํ์ฅ์๋ค
Vector Graphics
Raster ์ด๋ฏธ์ง๋ ์ ์ผ๋ก ๊ตฌ์ฑ๋๊ธฐ ๋๋ฌธ์ Resolution์ ์ทจ์ฝํ๋ค. ๋ฐ๋ฉด์ Vector graphic์ ์ , ๊ณก์ ์ ํตํ ์ฌ๋ฌ ๋ค๊ฐํ์ ๋ง๋ค๊ณ ๊ทธ ๋ค๊ฐํ์ผ๋ก ์ํ์ ๊ณ์ฐ์ ํตํด ๋ค๊ฐํ์ ์์ ์ฑ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ง๋ ๋ค. ๋ฐ๋ผ์ ํ๋, ์ถ์๋ฅผ ํด๋ ์ด๋ฏธ์ง๊ฐ ๊นจ์ง์ง ์๊ณ ์๋ฒฝํ ํด์๋๋ฅผ ์ ๊ณตํ๋ค.
Vector vs Raster
SVG
SVG๋ Scalable Vector Graphic์ ์ฝ์๋ก Vector๊ทธ๋ํฝ์ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง ํ์ผ์ด๋ค. ํ๋/์ถ์ ์์๋ ๋ฐ์ํ์น์ ๋ง๋ค๋ resolution์ ๋ณด์ฅํ๋๋ฐ ์ ๋ฆฌํ๋ค.
ย
SVG๋ XML์ด๋ผ๋ ๋งํฌ์ ์ธ์ด๋ก ์์ฑ๋๋ฉฐ HTML๊ณผ ๋น์ทํ๊ฒ ๋ ๋๋ง๋๋ค.
๋ํ Scalable์ด๋ ์ด๋ฆ์ ๊ฑธ๋ง๊ฒ CSS๋ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๊ฐ element์ attribute๋ฅผ ํตํด animation, filter๋ฑ ๋ค์ํ ํจ๊ณผ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
ย
ํ์ง๋ง ๋จ์ ์ญ์ ์กด์ฌํ๋ค. SVG๋ ์ด๋ฏธ์ง๊ฐ ๋ณต์กํด์ ธ ๊ฐ์ฒด ์ ๊ฐ ๋ง์์ง๋ฉด SVG ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ ธ DOM์ ์ ์ข์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๊ณ ๋ ๋๋ง ์ ์ฐ์ฐ๋ ๋ง์์ ธ ๋ ๋๋ง ์ฑ๋ฅ๋ ์ ์ข์์ง๋ค. ๋ฐ๋ผ์ ์ ์ ํ๊ฒ ํ์ํ ๊ณณ์ ํ์ฉํ์.
SVG::example
ViewBox
svg element์๋ viewBox๋ผ๋ ํน๋ณํ attribute๊ฐ ์๋ค.
View port - view port๋ svg๊ฐ ๊ทธ๋ ค์งย ์บ๋ฒ์ค์ ์ฌ์ด์ฆ๋ฅผ ์๋ฏธํ. svg์ width, height attribute๋ฅผ ์ฌ์ฉํด์ view port์ size๋ฅผ ์ง์ ํ ์ ์๋ค. ๋ง์ฝ ์ง์ ํ์ง ์๋๋ค๋ฉด ๋ธ๋ผ์ฐ์ ์ viewport๊ฐ canvas์ ํฌ๊ธฐ๊ฐ ๋๋ค.
view port๋ ์ฌ๋ฌ๊ฐ์ง unit์ผ๋ก ํฌ๊ธฐ ์ง์ ์ด ๊ฐ๋ฅํ๋ค. default๋ px์ด๋ค.
units: px, ex, em, pt, pc, cm, mm, inch
viewBox ๋ viewport๋ฅผ ๊ธฐ์ค์ผ๋ก aspect ratio๋ฅผ ์ง์ ํ๋ attribute์ด๋ค.
ViewBox - example
Syntax
viewBox="min-x min-y width height"
SVG's Elements
Elements - rect::attributes
x - x์์น
y - y ์์น
width - ์ฌ๊ฐํ์ ๋๋น
height - ์ฌ๊ฐํ์ ๋์ด
fill - ์ฌ๊ฐํ ์
rx - radius(border) ๊ฐ๋ก์ถ
ry - radius(border) ์ธ๋ก์ถ
Elements - rect::example
Elements - circle
circle์ย ์์ (center) ๊ณผ ๋ฐ์ง๋ฆ(radius)์
์ฌ์ฉํด์ ์์ ๊ทธ๋ฆฐ๋ค.
Elements - circle::attributes
cx - ์์ ์ x์ขํ
cy - ์์ ์ y์ขํ
r - ์์ ๋ฐ์ง๋ฆ, ์ฆ r * 2๊ฐ ์์ ์ง๋ฆ(ํฌ๊ธฐ)์ด ๋๋ค.
Elements - circle::example
Elements - ellipse
ellipse๋ย ์์ (center) ๊ณผ x์ถ ๋ฐ์ง๋ฆ๊ณผ y์ถ ๋ฐ์ง๋ฆ์
์ฌ์ฉํด์ ํ์์ ๊ทธ๋ฆฐ๋ค.
Elements - ellipse::attributes
cx - ์์ ์ x์ขํ
cy - ์์ ์ y์ขํ
rx - ์์ x์ถ ๋ฐ์ง๋ฆ
ry - ์์ y์ถ ๋ฐ์ง๋ฆ
Elements - ellipse::example
Elements - line
line์ 2๊ฐ์ ์ ์ ์ด์ฉํ์ฌ ์ ์ ๊ทธ๋ฆฝ๋๋ค.
Elements - line::attributes
x1 - ์์์ ์ x์ขํ
y1 - ์์์ ์ y์ขํ
x2 - ๋์ ์ x์ขํ
y2 - ๋์ ์ y์ขํ
Elements - line::example
Elements - polyline
polyline์ ์ฌ๋ฌ ๊ฐ์ ์ ์ ์ฌ์ฉํด์ ๋ค์ํ ๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋๋ "์ง์ "์ ๊ทธ๋ฆฝ๋๋ค.
Elements - polyline::attributes
points - ์ ์ ์ฐ๊ฒฐํ ์ (x,y ์ขํ ์)๋ค์ ๋ฆฌ์คํธ
Elements - polyline::example
Elements - polygon
polygon์ ์ฌ๋ฌ ๊ฐ์ ์ ์ ์ด์ฉํ์ฌ ๋ํ์ ๊ตฌ์ฑํ๋ ์ง์ ์ ๋ง๋ ๋ค.ย
Elements - polygon::attributes
points - ๊ผญ์ง์ (x,y ์ขํ ์)๋ค์ ๋ฆฌ์คํธ
Elements - polygon::example
Elements - text
text๋ย ํ ์คํธ ์์๋ฅผ ๊ทธ๋ฆฐ๋ค.
Elements - text::attributes
x - x์ขํ
y - y์ขํ
rotate - ๊ฐ ๋ฌธ์๋ณ ํ์ ๋ฐฉํฅ ๋ฆฌ์คํธ
ย
ย
Elements - text::example
Elements - tspan
tspan์ text์์์ subtext๋ฅผ ๋ฃ์ ๋ ์ฌ์ฉํ๋ค. ์ด ์์์ ์ฉ๋๋ ํน์ subtext์ style์ด๋ position๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด์ ์ด๋ค.
Elements - tspan::example
Elements - g
g๋ ์ฌ๋ฌ ์์๋ค์ ๊ทธ๋ฃจํํ๋ ์ปจํ ์ด๋ ์์์ด๋ค.
๊ทธ๋ฃน ์์ ์๋ ์์๋ค์ g์ ํจ๊ณผ๋ฅผ ์์ ๋ฐ๋๋ค.ย
ย
๋ฐ๋ผ์ ์ฌ๋ฌ ์์์ ํ ๋ฒ์ ๋์ผํ ํจ๊ณผ๋ฅผ ์ค ์ ์๋ค.ย
Elements - g::example
Elements - path
path๋ ์ง์ , ๊ณก์ ์ ์ด์ฉํ์ฌ ์ด๋ค ๋ค์ํ ํํ๋ก์ ๋ํ์ ๊ทธ๋ฆด ์ ์๋ค. SVG element ์ค ๊ฝ์ด๋ผ๊ณ ํ ์ ์๋ค.
Elements - path::attributes
d - path๋ฅผ ์ ์ํ๋ค.
ย ย ย d๋ ๋ค์ํ command๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ย
ย ย ย ๊ฐ command๋ ์ง์ ๊ณผ ๊ณก์ ์ ๊ทธ๋ฆด ์ ์๋ ๋ช ๋ น์ด์ด๋ค.
Elements - path::attributes
d's commands
M, m - ๋ผ์ธ์ ์์์ ์ ์์น๋ฅผ ์ด๋ํ๋ค.
L, l - ์์์ ์ ๋ถํฐ ์ ์ ๊ทธ์ ๋์ ์ ๋ฃ๋๋ค.
H, h - ์์์ ์ผ๋ก ๋ถํฐ ๊ฐ๋ก ์ ์ ๊ธ๋๋ค.
V, v - ์์์ ์ผ๋ก ๋ถํฐ ์ธ๋ก ์ ์ ๊ธ๋๋ค.
C, c - 4๊ฐ์ ์ ์ ์ฌ์ฉํ 3์ฐจ ๋ฒ ์ง์ด ๊ณก์ ์ ๊ทธ๋ฆฐ๋ค.
Q, q - 3๊ฐ์ ์ ์ ์ฌ์ฉํ 2์ฐจ ๋ฒ ์ง์ด ๊ณก์ ์ ๊ทธ๋ฆฐ๋ค.
A, a - ํธ๋ฅผ ๊ทธ๋ฆฐ๋ค.
Z, z - ๋์ ๊ณผ ์์์ ์ ์ฐ๊ฒฐํ๋ค.
ย
Elements - path
Bezier curve
์ ์ด์
Elements - path::example
Elements - defs
defs๋ ๋ฐ๋ก ๋ ๋๋ง ๋์ง ์๊ณ ๋ค๋ฅธ ์์์์ย ์ฌ์ฉํ ํจ๊ณผ ์์๋ฅผ ์ ์ฅํ๋ ์ ์ฅ์์ด๋ค.
Elements - defs::example
Elements - desc
desc๋ ์น ์ ๊ทผ์ฑ์ ์ํด ํ ์์์ ๋ํ ์งง๊ฑฐ๋ ๊ธด ์ค๋ช ์ ๋ฃ์ด ์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์ค๋ช ์ ํ๋ฉด์ ๋ ๋๋ง ๋์ง ์๋๋ค.
Elements - desc::example
Elements - use
use๋ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ๋ ์์์ ๋์ผํ๊ฒ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. ์๋ณธ์์ ์ฌ์ฉ๋ ์์ฑ์ ์ค๋ฒ๋ผ์ด๋ํ ์ ์๋ค.
Elements - use::attritues
Elements - use::example
Practice - Path Animation
Practice - Clock
By Seungwoo Hong