Go-Qt5開發之QPen(畫筆)(37)

Go-Qt5開發之QPen-畫筆

案例說明

  • QPen是一個基本的圖形對象。用於繪製線條、曲線和輪廓的矩形、橢圓、多邊形或其他形狀。

  • 示例中我們畫六行。線條勾勒出了六個不同的筆風格。有五個預定義的鋼筆樣式。

  • 我們也可以創建自定義的鋼筆樣式。最後一行使用一個定製的鋼筆繪製風格。

demo.go

package main

import (
	"github.com/therecipe/qt/core"
	"github.com/therecipe/qt/gui"
	"github.com/therecipe/qt/widgets"
	"os"
)

/*
QPen是一個基本的圖形對象。用於繪製線條、曲線和輪廓的矩形、橢圓、多邊形或其他形狀。


示例中我們畫六行。線條勾勒出了六個不同的筆風格。有五個預定義的鋼筆樣式。
我們也可以創建自定義的鋼筆樣式。最後一行使用一個定製的鋼筆繪製風格。
*/

func InitUi() *widgets.QMainWindow {
	// 創建窗口
	app := widgets.NewQMainWindow(nil, 0)

	// 設置窗口的標題
	app.SetWindowTitle("Qt 教程")

	// 設置窗口的位置和大小
	app.SetGeometry2(300, 300, 300, 220)

	// 設置窗口的圖標,引用當前目錄下的web.png圖片
	app.SetWindowIcon(gui.NewQIcon5("images/app.ico"))

	// 佈局窗口組件載體
	widget := widgets.NewQWidget(app, core.Qt__Widget)
	//widget.SetGeometry(core.NewQRect4(300, 300, 300, 220))
	//widget.SetGeometry2(0, 0, 300, 220)
	app.SetCentralWidget(widget)

	// 狀態欄
	app.StatusBar()

	widget.ConnectPaintEvent(func(event *gui.QPaintEvent) {
		qp := gui.NewQPainter2(widget)
		//qp.Begin(widget)

		//我們創建一個QPen對象。顏色是黑色的。
		//寬度設置爲2像素,這樣我們可以看到筆風格之間的差異。Qt.SolidLine是預定義的鋼筆樣式。
		//pen := gui.NewQPen3(gui.NewQColor2(core.Qt__black))
		pen := gui.NewQPen4(gui.NewQBrush2(core.Qt__SolidPattern), 2, core.Qt__SolidLine, core.Qt__FlatCap, core.Qt__MiterJoin)
		qp.SetPen(pen)
		qp.DrawLine3(20, 40, 250, 40)

		pen.SetStyle(core.Qt__DashDotDotLine)
		qp.SetPen(pen)
		qp.DrawLine3(20, 80, 250, 80)

		pen.SetStyle(core.Qt__DashDotLine)
		qp.SetPen(pen)
		qp.DrawLine3(20, 120, 250, 120)

		pen.SetStyle(core.Qt__DotLine)
		qp.SetPen(pen)
		qp.DrawLine3(20, 160, 250, 160)

		pen.SetStyle(core.Qt__DashDotDotLine)
		qp.SetPen(pen)
		qp.DrawLine3(20, 200, 250, 200)

		//這裏我們定義了一個畫筆風格。
		//我們設置了Qt.CustomDashLine並調用了setDashPattern()方法,
		//它的參數(一個數字列表)定義了一種風格,必須有偶數個數字;
		//其中奇數表示繪製實線,偶數表示留空。數值越大,直線或空白就越大。
		//這裏我們定義了1像素的實線,4像素的空白,5像素實線,4像素空白。。。
		pen.SetStyle(core.Qt__CustomDashLine)
		qp.SetPen(pen)
		pen.SetDashPattern([]float64{1, 4, 5, 4})
		qp.DrawLine3(20, 240, 250, 240)

		qp.End()

	})

	return app
}

func main() {
	// 創建一個應用程序對象
	// sys.argv參數是一個列表,從命令行輸入參數
	widgets.NewQApplication(len(os.Args), os.Args)

	// 初始化窗口
	app := InitUi()

	// 顯示組件
	app.Show()

	// 確保應用程序乾淨的退出
	widgets.QApplication_Exec()
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章