プチコンBIGで作成した世界地図をprocessingで作ってみるとかなりはやくなる。
pythonに移植してみるとおそーくなる。それでもpythonでguiソフトが思ったより簡単に作れたので
c#で作るとどうなるだろうかとMonodevelopに手を出してどうにも良い参考サイトが見つからなくてさっぱり
ツールで画面にボタンとかの配置ができないありさまで一時撤収
それならばgoはどうだろうかとやってみる。
gitを入れないといけないらしい。いまさらながら登録からやってみる。
いろいろなgui用のライブラリがあってどれをつかったらよいのやら…いろいろ試行錯誤してとりあえずgo-sdl2というのをつかってみることにした。
export GOPATH="$HOME/go"
でgopathを設定して
go-sdl2というのを入れてその中にあるexamplesのソースをかたっぱしから
go build xxx.goでコンパイル
importエラーの起こるライブラリをgo get xxxxを取得してリコンパイルして実行ファイルができる。
いろいろなサイトをみて試行錯誤しまくったので正しい手順をふんでいる自信はまったくなし。
GUI画面にpngを2枚貼っただけexamplesのソースを見様見真似で加工してみただけでまだgo言語については何も知らない。
world.go
利用画像
world.png
hi.png プログラムに合わせて一部加工しています。
画像引用元 国土地理院 地球地図全球版
画像のCopyright. Geospatial Information Authority of Japan. ALL RIGHTS RESERVED.
pythonに移植してみるとおそーくなる。それでもpythonでguiソフトが思ったより簡単に作れたので
c#で作るとどうなるだろうかとMonodevelopに手を出してどうにも良い参考サイトが見つからなくてさっぱり
ツールで画面にボタンとかの配置ができないありさまで一時撤収
それならばgoはどうだろうかとやってみる。
gitを入れないといけないらしい。いまさらながら登録からやってみる。
いろいろなgui用のライブラリがあってどれをつかったらよいのやら…いろいろ試行錯誤してとりあえずgo-sdl2というのをつかってみることにした。
export GOPATH="$HOME/go"
でgopathを設定して
go-sdl2というのを入れてその中にあるexamplesのソースをかたっぱしから
go build xxx.goでコンパイル
importエラーの起こるライブラリをgo get xxxxを取得してリコンパイルして実行ファイルができる。
いろいろなサイトをみて試行錯誤しまくったので正しい手順をふんでいる自信はまったくなし。
GUI画面にpngを2枚貼っただけexamplesのソースを見様見真似で加工してみただけでまだgo言語については何も知らない。
world.go
package main import ( "fmt" "github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl_image" "os" ) var winTitle string = "Go-SDL2 Texture" var winWidth, winHeight int = 1400,700 var imageName string = "./world.png" var imageName2 string = "./hi.png" func run() int { var window *sdl.Window var renderer *sdl.Renderer var texture *sdl.Texture var texture2 *sdl.Texture var src, dst sdl.Rect var src2, dst2 sdl.Rect var err error window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, winWidth, winHeight, sdl.WINDOW_SHOWN) if err != nil { fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err) return 1 } defer window.Destroy() renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) if err != nil { fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err) return 2 } defer renderer.Destroy() image, err := img.Load(imageName) if err != nil { fmt.Fprintf(os.Stderr, "Failed to load PNG: %s\n", err) return 3 } defer image.Free() image2, err := img.Load(imageName2) if err != nil { fmt.Fprintf(os.Stderr, "Failed to load PNG2: %s\n", err) return 4 } defer image2.Free() texture, err = renderer.CreateTextureFromSurface(image) if err != nil { fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", err) return 5 } defer texture.Destroy() texture2, err = renderer.CreateTextureFromSurface(image2) if err != nil { fmt.Fprintf(os.Stderr, "Failed to create texture2: %s\n", err) return 6 } defer texture2.Destroy() src = sdl.Rect{0, 0, 373, 186} dst = sdl.Rect{100, 50, 373, 186} src2 = sdl.Rect{0, 0, 421, 74} dst2 = sdl.Rect{800, 50, 421, 74} renderer.Clear() renderer.SetDrawColor(255, 0, 0, 255) renderer.FillRect(&sdl.Rect{0, 0, int32(winWidth), int32(winHeight)}) renderer.Copy(texture, &src, &dst) renderer.Copy(texture2, &src2, &dst2) renderer.Present() sdl.Delay(2000) return 0 } func main() { os.Exit(run()) }
利用画像
world.png
hi.png プログラムに合わせて一部加工しています。
画像引用元 国土地理院 地球地図全球版
画像のCopyright. Geospatial Information Authority of Japan. ALL RIGHTS RESERVED.