Go Tour练习图像

本篇是”Go 语言之旅“练习之”图像“的学习记录。

++++++++++++++++++++++++++++++++++++++++++++++++++++

还记得之前编写的图片生成器 吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。

定义你自己的 Image 类型,实现必要的方法并调用 pic.ShowImage

Bounds 应当返回一个 image.Rectangle ,例如 image.Rect(0, 0, w, h)

ColorModel 应当返回 color.RGBAModel

At 应当返回一个颜色。上一个图片生成器的值 v 对应于此次的 color.RGBA{v, v, 255, 255}

++++++++++++++++++++++++++++++++++++++++++++++++++++

繁杂之处在于Image接口定义的方法返回类型还是接口,也就是说不仅要实现Image接口定义的3个方法,还要实现这些方法返回接口定义的方法。为求方便,把这些实现都集成到了自定义的Image里。

package main

import (
	"golang.org/x/tour/pic"
	"image/color"
	"image"
	)

type Image struct{}
func (i Image)ColorModel() color.Model{
	return i
}

func (i Image)Convert(c color.Color) color.Color{
	return c
}


func (i Image)Bounds() image.Rectangle{
	return image.Rectangle{
		Min: image.Point{
			X:0,
			Y:0,
		},
		Max: image.Point{
			X:100,
			Y:100,
		},
	}
}

func (i Image)  At(x, y int) color.Color{
	return i
}

func(i Image) RGBA() (r, g, b, a uint32){
 return 0xFFFF,0xFFFF,0,0xFFFF
}
func main() {
	m := Image{}
	pic.ShowImage(m)
}

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x