func (mw *MyMainWindow) drawStuff(canvas *walk.Canvas, updateBounds walk.Rectangle) error { bmp, err := createBitmap() if err != nil { return err } defer bmp.Dispose() bounds := mw.paintWidget.ClientBounds() rectPen, err := walk.NewCosmeticPen(walk.PenSolid, walk.RGB(255, 0, 0)) if err != nil { return err } defer rectPen.Dispose() if err := canvas.DrawRectangle(rectPen, bounds); err != nil { return err } ellipseBrush, err := walk.NewHatchBrush(walk.RGB(0, 255, 0), walk.HatchCross) if err != nil { return err } defer ellipseBrush.Dispose() if err := canvas.FillEllipse(ellipseBrush, bounds); err != nil { return err } linesBrush, err := walk.NewSolidColorBrush(walk.RGB(0, 0, 255)) if err != nil { return err } defer linesBrush.Dispose() linesPen, err := walk.NewGeometricPen(walk.PenDash, 8, linesBrush) if err != nil { return err } defer linesPen.Dispose() if err := canvas.DrawLine(linesPen, walk.Point{bounds.X, bounds.Y}, walk.Point{bounds.Width, bounds.Height}); err != nil { return err } if err := canvas.DrawLine(linesPen, walk.Point{bounds.X, bounds.Height}, walk.Point{bounds.Width, bounds.Y}); err != nil { return err } bmpSize := bmp.Size() if err := canvas.DrawImage(bmp, walk.Point{(bounds.Width - bmpSize.Width) / 2, (bounds.Height - bmpSize.Height) / 2}); err != nil { return err } return nil }
func main() { rand.Seed(time.Now().UnixNano()) model := NewFooModel() MainWindow{ Title: "Walk TableView Example", Size: Size{800, 600}, Layout: VBox{}, Children: []Widget{ PushButton{ Text: "Reset Rows", OnClicked: model.ResetRows, }, TableView{ AlternatingRowBGColor: walk.RGB(255, 255, 224), CheckBoxes: true, ColumnsOrderable: true, Columns: []TableViewColumn{ {Title: "#"}, {Title: "Bar"}, {Title: "Baz", Format: "%.2f", Alignment: AlignFar}, {Title: "Quux", Format: "2006-01-02 15:04:05", Width: 150}, }, Model: model, }, }, }.Run() }
func RunMainWindow() error { if _, err := (MainWindow{ Name: "mainWindow", // Name is needed for settings persistence Title: "Walk Settings Example", MinSize: Size{800, 600}, Layout: VBox{}, Children: []Widget{ TableView{ Name: "tableView", // Name is needed for settings persistence AlternatingRowBGColor: walk.RGB(255, 255, 200), ColumnsOrderable: true, Columns: []TableViewColumn{ {DataMember: "Index"}, {DataMember: "Bar"}, {DataMember: "Baz", Format: "%.2f", Alignment: AlignFar}, {DataMember: "Quux", Format: "2006-01-02 15:04:05", Width: 150}, }, Model: NewFooModel(), }}, }.Run()); err != nil { return err } return nil }
func createBitmap() (*walk.Bitmap, error) { bounds := walk.Rectangle{Width: 200, Height: 200} bmp, err := walk.NewBitmap(bounds.Size()) if err != nil { return nil, err } succeeded := false defer func() { if !succeeded { bmp.Dispose() } }() canvas, err := walk.NewCanvasFromImage(bmp) if err != nil { return nil, err } defer canvas.Dispose() brushBmp, err := walk.NewBitmapFromFile("../img/plus.png") if err != nil { return nil, err } defer brushBmp.Dispose() brush, err := walk.NewBitmapBrush(brushBmp) if err != nil { return nil, err } defer brush.Dispose() if err := canvas.FillRectangle(brush, bounds); err != nil { return nil, err } font, err := walk.NewFont("Times New Roman", 40, walk.FontBold|walk.FontItalic) if err != nil { return nil, err } defer font.Dispose() if err := canvas.DrawText("Walk Drawing Example", font, walk.RGB(0, 0, 0), bounds, walk.TextWordbreak); err != nil { return nil, err } succeeded = true return bmp, nil }
func NewMyWidget(parent walk.Container) (*MyWidget, error) { w := new(MyWidget) if err := walk.InitWidget( w, parent, myWidgetWindowClass, win.WS_VISIBLE, 0); err != nil { return nil, err } bg, err := walk.NewSolidColorBrush(walk.RGB(0, 255, 0)) if err != nil { return nil, err } w.SetBackground(bg) return w, nil }