From b7b2f5810ff26751ef712d17cf219db35fe03ced Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Sun, 13 May 2018 17:43:00 +0800 Subject: [PATCH] 19 --- 19.md | 18 ++++++++++++++---- img/19-0.jpg | Bin 0 -> 20579 bytes img/19-1.png | Bin 0 -> 9252 bytes img/19-2.svg | 2 ++ img/19-3.svg | 2 ++ 5 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 img/19-0.jpg create mode 100644 img/19-1.png create mode 100644 img/19-2.svg create mode 100644 img/19-3.svg diff --git a/19.md b/19.md index bd5a023..8b09486 100644 --- a/19.md +++ b/19.md @@ -1,16 +1,26 @@ # 十九、项目:像素艺术编辑器 +> 原文:[Project: A Pixel Art Editor](http://eloquentjavascript.net/19_paint.html) +> +> 译者:[飞龙](https://github.com/wizardforcel) +> +> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) +> +> 自豪地采用[谷歌翻译](https://translate.google.cn/) +> +> 部分参考了[《JavaScript 编程精解(第 2 版)》](https://book.douban.com/subject/26707144/) + > 我看着眼前的许多颜色。 我看着我的空白画布。 然后,我尝试使用颜色,就像形成诗歌的词语,就像塑造音乐的音符。 > > Joan Miro -![]() +![](img/19-0.jpg) 前面几章的内容为你提供了构建基本的 Web 应用所需的所有元素。 在本章中,我们将实现一个。 我们的应用将是像素绘图程序,你可以通过操纵放大视图(正方形彩色网格),来逐像素修改图像。 你可以使用它来打开图像文件,用鼠标或其他指针设备在它们上面涂画并保存。 这是它的样子: -![]() +![](img/19-1.png) 在电脑上绘画很棒。 你不需要担心材料,技能或天赋。 你只需要开始涂画。 @@ -337,7 +347,7 @@ function rectangle(start, state, dispatch) { 实现洪水填充涉及更多东西。 这是一个工具,填充和指针下的像素,和颜色相同的所有相邻像素。 “相邻”是指水平或垂直直接相邻,而不是对角线。 此图片表明,在标记像素处使用填充工具时,着色的一组像素: -![]() +![](img/19-2.svg) 有趣的是,我们的实现方式看起来有点像第 7 章中的寻路代码。那个代码搜索图来查找路线,但这个代码搜索网格来查找所有“连通”的像素。 跟踪一组可能的路线的问题是类似的。 @@ -730,7 +740,7 @@ function startPixelEditor({state = startState, 两个像素之间的直线是连接像素的链条,从起点到终点尽可能直。对角线相邻的像素也算作连接。 所以斜线应该看起来像左边的图片,而不是右边的图片。 -![]() +![](img/19-3.svg) 如果我们有了代码,它在两个任意点间绘制一条直线,我们不妨继续,并使用它来定义`line`工具,它在拖动的起点和终点之间绘制一条直线。 diff --git a/img/19-0.jpg b/img/19-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..742981d298c881766b603b228294c4f66b62b6dc GIT binary patch literal 20579 zcmce-1C(UVwl11w+qP}nwv8^^>auOywyV2r+tp=Pm#x0F&pG>?|L*;d`^FpNz84uI zGcx8kznBqg<%)pFg91<2978V8?1_llu84(U12_6Op5gic;1r-eq4Hf|d6CD*385IrnA0$8^Upk;* zP+(wCsBkcFsQ<6ipMC%mBoI5$83+&(02m1f1PSQRAOH^l1ONv4hq-`%CUA%^6G4E1 zpuWVYf2sd3`JZ(FEXbD^jtHg0&dK$zYzn#xNQ*z0%Bemxknp%{{}z+fr_07Fu@LdrM)Zg{~G{i z*gTknjw!%pFB8vzP$J0xcL2Z`*G}b#sDhL<_*$T_ET4Du zCe#}_=;B|IK-YfUa#(eIGfAvzc(10YNYi3YJ}Ab&xqJT&dFzZdX+}grY&LmfQjIX5 zPQ53uAgPpVAo#CHSmhWl(HkbYFByahCMe=+!mY)(1Sf6Vf8)I4dOi%~mJPQw#S_&H zQItVId0DlakUcBp*7_GLsAzFicv_}%0@vaiii(Ha*qkY|>w&oa3OIjDekIB{|^#Lacy<>PTk&b-TuiSW)V6?*nWnn!lt z{f38Y>iY!5j2$q?omqrU&65dfB#ZDku+)NWZLKmcZ z;t*5qgW&(x1OOm1VtrCxplO%`1rVA}GV*2@2ut8~h>nbAN91r=GN#q|<3L6eb3A0E zuK%J1fY^;SNiPv}+QsFEVp1G-fO3$^!Wm0(VWinf_9;fDRo)%b^^CxLlD4W)4d zcYIQo$_YUzQ91xn1MPFFV)IwpuQI~GbstHIl?@E&6Z;51ZmoQ5E$smAV#+QHx#7P+ z0SGLED+!4`{PJeR!#}2(U;rRg>NCI>_k4AMS_1F=Hv|CSgIU`A zL5-3Q<+yaPI{G(&uTh4`sAhq^oBccC|BrQkUy}v{A^->s01Whx`R=RmmB4_2K|sL) z5XeXQJv&P(PGCK6;E-=C)pdE>#rui#zbW7}X zy-f>MgV%;B#_6smq&}g1n;7QBTK>A)7S%0~y(l5R#bXpDK>^3O7dSN>COWnuFSYBX zY&CiAM-4|6l>BP$iyljr$nP$iwsJzAI0Q!f!Q4~-3db%*S-(Eh>J&W)5Wljn&Yg(sZ!9_dEYq6c(<7+~) zZ{_E0{qSx9ENGa*2gu9L-9eJ<7TgspBJ0n`epM`UCxO2z=%6yN*AE)tEy9@TzbA^1 zb4iH@DD*o!Q2VJ%@G_5}duc2p2~WtWe1~du><*ZTZSH1ksv@yQX}Fr?pG>SyQ6q|b z?_blRSI04E!_JK%@5-Xr{M(prP0~L)$Sw%`EC91xL)( zXdl5=g$fe2wKVJhJwK_uJCR+JjE)bCI^g1xYOTj=JB zTeI8E1a!Z@8?B84FInF_ES;=Z9ZV7$bV|<^J1tAxYFG6ao*~&*)Eqxcbl@g8ee}vh z1=@>R;OB{DY_2qRkY@r>-ZvoEF}`3}M7j|^L!9qxlu>g`>r$R3GxR>z)?PPCj^W&g zea^nrhBmEWTXQ?&wmCr~;$A{4I;|L5m=Pm%pmRWR30~l?u6XJK_(>}V%{d$lO^Blx^icivEbI&BQgcmz$y z!@{QM%w$johB5cNYN-ZWF=NHWS=oo^gB=-hP;ZPm#i0htABjJaL%zJ5V$ATPPZE7DdfC@*aR###?n%5{E8T=UfP3q?r`woI49HTE%Gzh zz#;gsB%BBE&{7S3+7&5*YZrVju~W{xuLIVX974^wiJMbNB*oaU{(77P7l*qK5i4v9DLMS+fwP)J2`7iY5+@S(aKP@Wy-do=9Hstxrv)!NBGK&f#rOlbo zC?7=N%8WHVUxTnq-vElB3y&GfF~}DFRa~_Pf⋙`u9FgudE#v_ijF>75CoS4Qz3> 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 literal 0 HcmV?d00001 diff --git a/img/19-2.svg b/img/19-2.svg new file mode 100644 index 0000000..4cb0b07 --- /dev/null +++ b/img/19-2.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/img/19-3.svg b/img/19-3.svg new file mode 100644 index 0000000..95bbf53 --- /dev/null +++ b/img/19-3.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file