Home >Backend Development >Golang >How to draw golang
How to draw pictures in Golang?
Golang is an efficient, concise and high-performance programming language. Due to its simple and clear syntax structure and efficient execution speed, more and more programmers are beginning to use Golang for development. However, Golang itself does not provide much drawing functionality. So, how to draw in Golang? This article will provide a detailed introduction to drawing in Golang.
1. Basics of drawing in Golang
First you need to create a canvas. In Golang, you can create one through the New function of the image library canvas. The parameter of the New function is an image.Rectangle type parameter, which is used to set the size and range of the canvas.
The following is a code to create a canvas of size 500x500:
package main import ( "image" "image/color" "image/png" "os" ) func main() { width, height := 500, 500 img := image.NewRGBA(image.Rect(0, 0, width, height)) file, _ := os.Create("output.png") defer file.Close() png.Encode(file, img) }
The image library in Golang provides a variety of brushes and color, graphics can be drawn on the canvas through the draw.Draw function. Before drawing, you need to define the brush and color. Here we use a black brush and red fill color.
The following code snippet shows how to define the brush and fill color:
import ( "image/color" "image/draw" ) //创建画笔和填充色 pen := color.Black fillColor := color.RGBA{255, 0, 0, 255} //使用画笔填充整个画布 draw.Draw(img, img.Bounds(), &image.Uniform{fillColor}, image.Point{}, draw.Src)
Now we have created a canvas and defined With the brush and fill color, we can start drawing shapes. When drawing, we need to use objects in the image library to create graphics. The image library provides a variety of objects, such as points, lines, rectangles, circles, and text.
The following code demonstrates how to use the create function to create a circle and draw it on the canvas:
import ( "image" "image/color" "image/draw" "math" ) //定义画笔和填充色 pen := color.Black fillColor := color.RGBA{255, 0, 0, 255} //在画布上绘制圆形 cx, cy, radius := 250, 250, 100 for x := -radius; x < radius; x++ { for y := -radius; y < radius; y++ { if math.Pow(float64(x), 2)+math.Pow(float64(y), 2) < math.Pow(float64(radius), 2) { img.Set(cx+x, cy+y, fillColor) } } }
2. Advanced drawing functions in Golang
Above The drawing method can meet basic drawing needs, but for some advanced drawing needs, such as drawing complex graphics or adding shadows, this simple drawing method cannot satisfy. The following are the advanced drawing functions provided in Golang:
A straight line is the most basic drawing object. The function for drawing a straight line in Golang is DrawLine. Its parameters include source point, target point and brush color.
The following is a code example for drawing a straight line:
import ( "image/color" "golang.org/x/image/draw" ) point1 := image.Point{100, 100} point2 := image.Point{200, 200} pen := &image.Uniform{color.RGBA{255, 0, 0, 255}} drawLine(img, point1, point2, pen)
Golang provides the function DrawArc for drawing arcs. Its parameters include center point, radius, starting angle, ending angle and brush color.
The following is a code example for drawing an arc:
import ( "math" "image/color" "golang.org/x/image/draw" ) centerX, centerY := 250, 250 radius := 100 startAngle := 60.0 endAngle := 120.0 pen := &image.Uniform{color.RGBA{255, 0, 0, 255}} draw.Arc(img, centerX, centerY, radius, startAngle*math.Pi/180, endAngle*math.Pi/180, pen)
In Golang, the image library can be used to easily draw text Draw on canvas. The DrawString function can draw the specified string on the canvas. Its parameters include the font, font size, text content, drawing position and font color of the drawn text.
The following is a code example for drawing text:
import ( "image/color" "golang.org/x/image/font" "golang.org/x/image/font/opentype" "golang.org/x/image/math/fixed" "golang.org/x/image/draw" "io/ioutil" ) //读取字体文件 fontBytes, _ := ioutil.ReadFile("path/to/fontfile.ttf") //解析字体文件 font, _ := opentype.Parse(fontBytes) //创建字体对象 f := opentype.Face(font, &opentype.FaceOptions{Size: 60, DPI: 72, Hinting: font.Hinting()}) //定义绘制文本的位置和颜色 text := "Hello, Golang!" pen := &image.Uniform{color.RGBA{0, 0, 255, 255}} pt := fixed.P(50, 200) //在画布上绘制文本 draw.Draw(img, img.Bounds(), &image.Uniform{color.White}, image.Point{}, draw.Src) drawString(img, f, text, pt, pen)
3. Conclusion
The above is an introduction to drawing in Golang in this article. Golang itself does not provide many drawing functions, but the image library in Golang provides basic drawing functions. We can encapsulate some advanced drawing functions ourselves according to our needs to meet some advanced drawing needs. I hope this article can help readers better understand drawing in Golang.
The above is the detailed content of How to draw golang. For more information, please follow other related articles on the PHP Chinese website!