【Go语言】golang画图初步

今天介绍一下golang的画图功能。我也没怎么仔细研究,简单的实现了画点画线,然后可以保存成png格式。我想做一个类似画板的东西,今天这是第一次尝试,所以不多说直接上代码了吧。

package main

import (
“fmt”
“image”
“image/color”
“image/png”
“os”
)

//宽度,高度,文件名
func draw_point(width, height int, file_name string) {
dx := width
dy := height

img_name := file_name //文件名
img_file, _ := os.Create(img_name + “.png”) //新建文件
defer img_file.Close()
img := image.NewRGBA(image.Rect(0, 0, dx, dy)) //指定大小的位图

drawline(5, 5, 300, 300, img)   //画线

drawline(5, 5, 5, 300, img)
drawline(300, 5, 300, 300, img)
//画点
for y := 0; y < dy; y++ {
for x := 0; x < dx; x++ {
if x%2 == 0 {
//设置颜色
img.Set(x, y, color.RGBA{uint8(x % 255), uint8(y % 255), 0, 255})
}
if x%3 == 0 {
img.Set(x, y, color.RGBA{255, 0, 0, 255})
}
if x%7 == 0 {
img.Set(x, y, color.RGBA{0, 0, 255, 255})
}
if x%7 == 0 {
img.Set(x, y, color.RGBA{0, 255, 0, 255})
}
}

}
//画线,(x0,y0)到(x1,y1)
func drawline(x0, y0, x1, y1 int, img *image.RGBA) {
dx := abs(x1 – x0)
dy := abs(y1 – y0)
sx, sy := 1, 1
if x0 >= x1 {
sx = -1
}
if y0 >= y1 {
sy = -1
}
err := dx – dy

for {
set_olor(x0, y0, img)
if x0 == x1 && y0 == y1 {
return
}
e2 := err * 2
if e2 > -dy {
err -= dy
x0 += sx
}
if e2 < dx {
err += dx
y0 += sy
}
}
}

func main() {

draw_point(400, 400, “lkn”)
}

这个最简单的画点画线实现了。明天研究一下界面。期待golang版本的画板诞生!

刘凯宁@C2P
2014年7月18日

Share

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>