Шукати в цьому блозі

Створення векторних фігур



Щоб малювати фігуру ми просто креслимо лінії вказуючи координати, а коли замкнемо всі лінії можемо залити фігуру кольором

local myShape = Shape.new() --Створили фігуруmyShape:setLineStyle(2) --Товщина лініїmyShape:setFillStyle(Shape.SOLID, 0x9900ff) --Колір і тип заливкиmyShape:beginPath() --Малюємо шлях з лінійmyShape:moveTo(1,1) --стартовая точкаmyShape:lineTo(100,1)
myShape:lineTo(100,100)
myShape:lineTo(1,100)
myShape:lineTo(1,1)
myShape:endPath() --Замикаємо шлях в фігуруstage:addChild(myShape) --Додаємо фігуру в рівень у нас вийшов квадрат

Тепер ми можемо працювати з фігурою:

myShape: SETPOSITION ( 75 , 0 ) -- Перемістити за координатамиmyShape: SetRotation ( 45 ) -- повернути на 45 гр

Є кілька варіантів заливки фігури setFillStyle
myShape:setFillStyle(Shape.SOLID, 0x9900ff)

Shape.SOLID - суцільна заливка
Shape.NONE \Немає заливки
Shape.TEXTURE \зафарбувати форму з текстурою з png картинки

Крім того, можна змінювати myShape: myShape: setLineStyle (2). Ширину, колір і прозорість

myShape:setLineStyle(2, 0x0000FF , 0,5) --Обведення 2пікс товщиною кольором 0x0000FF і прозорість 50%myShape:setFillStyle ( Shape.SOLID , 0x0000FF , 0,25 ) -- Залити суцільним кольором, і прозорість 25%

Малювання овалів, дуг, кіл


Arc = gideros.class(Shape)
function Arc:init(t)
local x = t.x or t.y or 0 local y = t.y or t.x or 0 local fillStyle = t.fillStyle or { Shape.SOLID, 0x000000, 0.5 }
local lineStyle = t.lineStyle or { 2, 0xffffff, 0.5 }
local xradius = t.xradius or t.radius or 100 local yradius = t.yradius or t.radius or 100 local sides = t.sides or (xradius + yradius)/2 -- кільк граней local startAngle = t.startAngle or 0 -- початок дуги 0 - 1 local arcAngle = t.arcAngle or 1 --кінець дуги
self:setFillStyle(unpack(fillStyle))
self:setLineStyle(unpack(lineStyle))
local angleStep = arcAngle / sides
self:setPosition(x,y)
local xx = math.cos(startAngle*2*math.pi) * xradius
local yy = math.sin(startAngle*2*math.pi) * yradius
self:beginPath()
self:moveTo(xx, yy)
for i = 1,sides do local angle = startAngle + i * angleStep
self:lineTo(math.cos(angle*2*math.pi) * xradius,
math.sin(angle*2*math.pi) * yradius)
end self:endPath()
if t.alpha then self:setAlpha(t.alpha)
end if t.parent then t.parent:addChild(self)
end
return self
end
---------------------------------------------- ВИКОРИСТОВУВАТИ ТАК----------------------------------------------- Малювати колоArc.new{x=700,y=700,xradius=500, yradius=500, sides=20,
fillStyle = { Shape.NONE , 0x000000, 1 },
lineStyle = { 3, 0x000000, 1 },
parent = stage}
-- Малювати дугуArc.new{x=600, y=600, radius=100, startAngle=0.25, arcAngle=0.25,
parent = stage}











3

Немає коментарів:

Дописати коментар