Canvas问题,无法绘制矩形

我有以下的代码,它在黑色背景上绘制了一个蓝色矩形和一条红色线。

function love.load()
    love.window.setMode(300,200,{fullscreen=false})
end

function love.draw()
    love.graphics.setColor(0, 0, 255, 255)
    love.graphics.rectangle("fill", 20, 20, 100, 20)
    love.graphics.setColor(255, 0, 0, 255)
    love.graphics.line(70, 30, 120, 30)
end

没有使用Canvas

我尝试将绘制移到Canvas上,所以我的代码改变为

local canvas

function love.load()
    love.window.setMode(300,200,{fullscreen=false})
    canvas = love.graphics.newCanvas(300, 200)
end

function love.draw()
    love.graphics.setCanvas(canvas)
    love.graphics.setColor(0, 0, 255, 255)
    love.graphics.rectangle("fill", 20, 20, 100, 20)
    love.graphics.setColor(255, 0, 0, 255)
    love.graphics.line(70, 30, 120, 30)
    love.graphics.setCanvas()
    love.graphics.draw(canvas)
end

使用Canvas

但第二个版本只在黑色背景上绘制了一条红线。

我做错了什么吗?

我使用的是Windows 10 Enterprise 64位系统,Lua 5.3.5,Löve 11.2.0.Mysterious Mysteries。

点赞
用户1009432
用户1009432

你需要在 love.graphics.draw(canvas) 一行之前添加下面这一行:

love.graphics.setColor(1, 1, 1, 1)

以重置画布可绘制颜色。使用此函数,你可以过滤颜色/改变整个画布的 alpha 通道。

顺便提一下,自 v11 起,颜色值范围已经变为 0~1。

文档中有一个示例代码,还有一条关于此事的注释...

https://love2d.org/wiki/Canvas

2019-04-10 22:13:22