国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

p5.js 開發(fā)點彩畫派的繪畫工具

這篇具有很好參考價值的文章主要介紹了p5.js 開發(fā)點彩畫派的繪畫工具。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文簡介

點贊 + 關(guān)注 + 收藏 = 學(xué)會了


這幾天在整理書柜時看到這套書,看到梵高,想起他的點彩畫。

p5.js 開發(fā)點彩畫派的繪畫工具


想到點彩畫派,不得不提的一個畫家叫喬治·皮埃爾·秀拉。據(jù)說梵高也模仿過他的畫作。

我引用一下維基百科對點彩畫派的解析:

點彩畫派(又稱點描派;英文:Pointillism)是一種用很粗的彩點堆砌,創(chuàng)造整體形象的油畫繪畫方法。


說簡單點,就是用圓點畫畫,比如秀拉的這幅作品《檢閱》。

p5.js 開發(fā)點彩畫派的繪畫工具


這種風(fēng)格除了用在藝術(shù)繪畫方面,在眼科醫(yī)院體檢的時候也會用到,比如測紅綠色盲。

然后我又繼續(xù)想啊想,想到我們用 canvas 好像也能做出一款點彩畫的繪圖工具,但用原生的方式寫是不可能的,因為我懶。思前想后,還是覺得用 p5.js 寫會好點,畢竟這個庫也是個比較知名的藝術(shù)庫。


于是查了一下 p5.jsapi ,做了一個簡陋版的工具。樣式方面就靠各位工友動手啦~

p5.js 開發(fā)點彩畫派的繪畫工具



動手編碼

要實現(xiàn)這個畫版工具主要有以下步驟:

  1. 創(chuàng)建 canvas 畫布。
  2. 創(chuàng)建顏色選擇器。
  3. 創(chuàng)建畫筆寬度控制器。
  4. 需要一個重置畫布的按鈕。
  5. 監(jiān)聽鼠標(biāo)點擊和點擊時移動的位置。
  6. 根據(jù)鼠標(biāo)點擊和點擊時移動的位置創(chuàng)建圓形。
  7. 點擊重置畫布按鈕將畫布背景設(shè)置回白色。

主要工作就是以上幾步,而且這幾步都用了 p5.js 提供的方法去實現(xiàn)。

主要用到的生命周期有 setupdraw,這部分我在 p5.js 光速入門 里有講到。

創(chuàng)建顏色選擇器、滑塊、按鈕分別用了 p5.jscreateColorPicker() 、createSlider()createButton() 方法。

繪制過程的代碼寫在 draw 周期里,使用了 circle() 方法創(chuàng)建圓形,圓形的坐標(biāo)就是鼠標(biāo)繪畫時的當(dāng)前坐標(biāo),圓形的尺寸是取滑塊的值,圓形的顏色取了顏色選擇器的值。


以下是完整代碼,可以結(jié)合上面的講解和代碼中的注釋一起理解。

<script src="https://cdn.jsdelivr.net/npm/p5@1.5.0/lib/p5.js"></script>

<script>
  // 顏色選擇器
  let colorPicker
  // 滑塊
  let brushSizeSlider
  // 布爾變量,用于跟蹤是否正在繪制
  let isDrawing = false
  // 筆刷的大小,默認(rèn)為10
  let brushSize = 10

  function setup() {
    // 創(chuàng)建一個400x400像素大小的畫布
    let canvas = createCanvas(400, 400)
    canvas.style('border', '1px solid #ccc')
    
    // 創(chuàng)建顏色選擇器
    colorPicker = createColorPicker('#ff0000')
    // 設(shè)置顏色選擇器的位置
    colorPicker.position(10, height + 10)
    
    // 創(chuàng)建滑塊
    brushSizeSlider = createSlider(1, 50, 10, 1)
    // 設(shè)置滑塊位置
    brushSizeSlider.position(120, height + 10)
    
    // 創(chuàng)建按鈕
    let resetButton = createButton('Reset')
    // 設(shè)置按鈕位置
    resetButton.position(240, height + 10)
    // 設(shè)置按鈕事件
    resetButton.mousePressed(resetCanvas)
    
    background(255)
  }

  function draw() {
    if (isDrawing) {
      let selectedColor = colorPicker.color()
      let selectedSize = brushSizeSlider.value()
      fill(selectedColor)
      noStroke()
      circle(mouseX, mouseY, selectedSize)
    }
  }

  // 當(dāng)鼠標(biāo)按下時
  function mousePressed() {
    isDrawing = true
  }

  // 當(dāng)鼠標(biāo)松開時
  function mouseReleased() {
    isDrawing = false
  }

  function resetCanvas() {
    background(255)
  }
</script>

上面的寫法是用 CDN 的方式引入 p5.js,用法上和 npm 下載的 p5.js 是有一丟丟區(qū)別的,想了解這方面知識可以看看 《p5.js 使用npm安裝p5.js后如何使用?》


同時我還把本文的代碼放到【碼上掘金】了,有興趣的工友自行獲取吧~



推薦閱讀

??《p5.js 光速入門》

??《p5.js 3D圖形-立方體》

??《p5.js 變換操作》

??《p5.js map映射》

??《p5.js 狀態(tài)管理》

??《p5.js 到底怎么設(shè)置背景圖?》)


點贊 + 關(guān)注 + 收藏 = 學(xué)會了
代碼倉庫文章來源地址http://www.zghlxwxcb.cn/news/detail-735774.html

到了這里,關(guān)于p5.js 開發(fā)點彩畫派的繪畫工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包