有没有办法通过在Golang中一次填充一个像素来绘制图像,最好使用draw2d包?
例如,可以使用stroke()命令绘制一条线(从它们的入门页面开始):
package main
impenter code hereort (
"bufio"
"fmt"
"log"
"os"
"code.google.com/p/draw2d/draw2d"
"image"
"image/png"
)
func saveToPngFile(filePath string, m image.Image) {
f, err := os.Create(filePath)
if err != nil {
log.Println(err)
os.Exit(1)
}
defer f.Close()
b := bufio.NewWriter(f)
err = png.Encode(b, m)
if err != nil {
log.Println(err)
os.Exit(1)
}
err = b.Flush()
if err != nil {
log.Println(err)
os.Exit(1)
}
fmt.Printf("Wrote %s OK.\n", filePath)
}
func main() {
i := image.NewRGBA(image.Rect(0, 0, 200, 200))
gc := draw2d.NewGraphicContext(i)
gc.MoveTo(10.0, 10.0)
gc.LineTo(100.0, 10.0)
gc.Stroke()
saveToPngFile("TestPath.png", i)
}
但我怎么能只填充一个像素,而不是连接2个点? Draw2d不是必需品,它只是我认为最简单的。
答案 0 :(得分:4)
在像draw2d或Cairo这样的矢量图形库中,很少有像素寻址,因为模型不是比特栅格。相反,矢量图形模型可以让您在抽象的欧几里德空间中绘制线条。这允许设备独立绘制并防止像素寻址,因为没有像素。
但是,draw2d底层有标准Package image,它允许使用函数Set进行像素寻址。
如果你做了很多像素,期望它很慢。也许可以了解光栅操作。