zoukankan      html  css  js  c++  java
  • Go语言*习题练习_1.4. GIF动画

    练习 1.5: 修改前面的Lissajous程序里的调色板,由黑色改为绿色。我们可以用color.RGBA{0xRR, 0xGG, 0xBB, 0xff}来得到#RRGGBB这个色值,三个十六进制的字符串分别代表红、绿、蓝像素。

    练习 1.6: 修改Lissajous程序,修改其调色板来生成更丰富的颜色,然后修改SetColorIndex的第三个参数,看看显示结果吧。

    package main
    
    import (
            "image"
            "image/color"
            "image/gif"
            "io"
            "math"
            "math/rand"
            "os"
    )
    
    //定义调色板 var palette = []color.Color{ color.RGBA{255,255,255,math.MaxUint8}, color.Black, color.RGBA{0,0,128,math.MaxUint8},color.RGBA{30,144,255,math.MaxUint8},color.RGBA{72,61,139,math.MaxUint8},color.RGBA{255,0,255,math.MaxUint8},color.RGBA{124,252,0,math.MaxUint8}} const ( whiteIndex = 0 // first color in palette blackIndex = 1 // next color in palette greenIndex = 2 // next color in palette 定义新的颜色 ) func main() { lissajous(os.Stdout) } func lissajous(out io.Writer) { const ( cycles = 5 // number of complete x oscillator revolutions res = 0.001 // angular resolution size = 100 // image canvas covers [-size..+size] nframes = 128 // number of animation frames delay = 8 // delay between frames in 10ms units ) freq := rand.Float64() * 3.0 // relative frequency of y oscillator anim := gif.GIF{LoopCount: nframes} phase := 0.0 // phase difference for i,c := 0,1; i < nframes; i++ { rect := image.Rect(0, 0, 2*size+1, 2*size+1) img := image.NewPaletted(rect, palette) for t := 0.0; t < cycles*2*math.Pi; t += res { x := math.Sin(t) y := math.Sin(t*freq + phase) img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5),uint8(c)) //使用新的颜色 } c ++ //修改颜色选择 if c >= len(palette) {            c = 1 } phase += 0.1 anim.Delay = append(anim.Delay, delay) anim.Image = append(anim.Image, img) } gif.EncodeAll(out, &anim) // NOTE: ignoring encoding errors }

      

     

  • 相关阅读:
    递归函数及Java范例
    笔记本的硬盘坏了
    “References to generic type List should be parameterized”
    配置管理软件(configuration management software)介绍
    WinCE文件目录定制及内存调整
    使用Silverlight for Embedded开发绚丽的界面(3)
    wince国际化语言支持
    Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
    WinCE Heartbeat Message的实现
    使用Silverlight for Embedded开发绚丽的界面(2)
  • 原文地址:https://www.cnblogs.com/yzhch/p/6374686.html
Copyright © 2011-2022 走看看