ver1.30の新機能について
近日公開予定のver1.30から、ブラシ処理のプログラム制御が可能になります。Lua言語を使ったスクリプト処理なので、開発環境を用意しなくても(メモ帳で編集するだけで)比較的簡単にオリジナルブラシの開発ができます。以下、スクリプトのサンプルとブラシ画像です (あくまで現時点での仕様に基づいたスクリプトです)。「これはなかなか面白いんじゃない?」とワクワクしながら開発しています。お楽しみに!
散布ブラシ
function main( x, y, p ) local w = bs_width() if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w then return 0 end end local i for i = 0,10 do local r,g,b = bs_forebg( math.random() ) local dx = x + bs_grand( 0, 0.5 ) * w * 2 local dy = y + bs_grand( 0, 0.5 ) * w * 2 local rnd = 0.3 + math.random()*0.7 bs_ellipse( dx,dy, rnd*w/2, rnd*w/2, 0, r,g,b, 255 ) end lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true
ブラシの進行方向を指す三角形
function main( x, y, p ) local w = bs_width() if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w then return 0 end end local dx,dy = bs_dir() local nx,ny = bs_normal() bs_polygon( x + nx * w/3, y + ny * w/3 ) bs_polygon( x - nx * w/3, y - ny * w/3 ) bs_polygon( x + dx * w, y + dy * w ) local r,g,b = bs_forebg( count/255 ) bs_fill( r,g,b, 255 ) count = (count + 16) % 255 lastDrawX = x lastDrawY = y firstDraw = false return 1 end count = 0 lastDrawX = 0 lastDrawY = 0 firstDraw = true
図形ブラシ (ハート型)
function main( x, y, p ) local w = bs_width() * 3 if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w*1.5 then return 0 end end bs_bezier_begin( 0, 0 ) bs_bezier_c( -1, -1, -0.5, -2, 0, -1.3 ) bs_bezier_c( 0.5, -2, 1, -1, 0, 0 ) bs_bezier_move( 0, 1.0 ) bs_bezier_mul( w, w*0.7 ) bs_bezier_rotate( math.random() * 2 * 3.14159 ) bs_bezier_move( x, y ) local r,g,b = bs_forebg( 0.75 + 0.25*math.random() ) bs_fill( r,g,b, 255 ) lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true
一番シンプルなスクリプト
function main( x, y, p ) local w = bs_width() local r,g,b = bs_fore() bs_rect( x,y, w,w, r,g,b, 255 ) return 1 end