Processing 網格紋理製作(棋盤格)使用pixel() set()畫素點繪製方式
阿新 • • 發佈:2020-09-26
#接上
我們趁熱打鐵,緊接上一回的棋盤格繪製,來挖掘一些不同繪製思路,使用`pixel()`函式來繪畫。這是一個以每個畫素點作為物件來繪製的思路,而不是以圖形的方式來填充。這就改變了繪畫思路。實際上,Processing有這樣的現成函式,使用x、y座標來定義視口內某個畫素點的顏色值,即`set(x,y)`,反之獲取某個畫素點的顏色值`get(x,y)`,你可以進傳送門[get()](https://processing.org/reference/get_.html) [set()](https://processing.org/reference/set_.html) 看一下官方給的解釋。而`pixel()`是指定圖片的畫素序列中某個點的顏色值,意味著不能隨心所欲能將其顏色改變成你要的,需要通過讀取操作`loadPixels()`和重新整理操作`updatePixels()`才能正確操作。前者將當前的PGraphics一張圖的所有畫素點物件存入容器pixels[]之中,方可進行操作,後者是將pixels[]容器的數值對當前的PGraphics影象畫素作一更新。當然也和螢幕畫素密度屬性`pixelDensity()`有關,具體參見[pixels()](https://processing.org/reference/pixels.html)。
#第一步
因此,我們不妨先在空pde中做些測試。如下:
```
void setup() {
size(400, 400);
loadPixels();
pixels[0] = color(0);
updatePixels();
}
```
試著執行,發現並沒有報錯,說明pixels[]這個陣列容器是存在的,而且取到了index索引0的這個pixel變數。有沒有問題?有!真有,如果寫多了面向物件的程式,就會很敏感的想到問題,那就是這個pixels[]是誰的屬性?這者說針對的物件是誰?是在訪問哪張圖的畫素集合?帶著疑問,去官網找答案。。。(我是沒有見到相關說明,當然不排除自己的疏忽,按道理這是需要給開發者說明白的,有讀者細心找到的話告知一聲,感激不盡!)並沒有找到很理想的說明,但是在Processing開