在Golang draw2d包中填充一个像素

时间:2014-03-30 17:07:10

标签: go

有没有办法通过在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不是必需品,它只是我认为最简单的。

1 个答案:

答案 0 :(得分:4)

在像draw2d或Cairo这样的矢量图形库中,很少有像素寻址,因为模型不是比特栅格。相反,矢量图形模型可以让您在抽象的欧几里德空间中绘制线条。这允许设备独立绘制并防止像素寻址,因为没有像素。

但是,draw2d底层有标准Package image,它允许使用函数Set进行像素寻址。

如果你做了很多像素,期望它很慢。也许可以了解光栅操作。