本文整理汇总了Golang中github.com/mattn/go-gtk/gdk.GC.SetRgbBgColor方法的典型用法代码示例。如果您正苦于以下问题:Golang GC.SetRgbBgColor方法的具体用法?Golang GC.SetRgbBgColor怎么用?Golang GC.SetRgbBgColor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/mattn/go-gtk/gdk.GC
的用法示例。
在下文中一共展示了GC.SetRgbBgColor方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: createEvents
/*
* Erzeugt die ganzen Events für das drawing area mittels lambdas.
*
* Parameter:
* drawingarea - Die drawing area auf der gezeichnet werden soll
*
* Zu den Schnittstellenkommentaren: Leider gibts das anscheinend nicht direkt
* in go (jedenfall kein @param etc.) :/
*/
func createEvents(drawingarea *gtk.DrawingArea) {
// Wir brauchen ne pixmap in der wir die Pixeldaten speichern
var pixmap *gdk.Pixmap
// gdk.GC ist einfach eine Sammlung an Eigenschaften und Einstellungen zum zeichnen
var gc *gdk.GC
p := point{x: -1, y: -1}
drawingarea.Connect("configure-event", func() {
// wenns schon ne pixmap gibt, lösche diese
if pixmap != nil {
pixmap.Unref()
}
// hole pixmap und stuff
allocation := drawingarea.GetAllocation()
pixmap = gdk.NewPixmap(drawingarea.GetWindow().GetDrawable(), allocation.Width, allocation.Height, 24)
// weißen Hintergrund zeichnen:
gc = gdk.NewGC(pixmap.GetDrawable())
gc.SetRgbFgColor(gdk.NewColor("white"))
pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1)
// Vorder- und Hintergrundfarbe setzen
gc.SetRgbFgColor(gdk.NewColor("black"))
gc.SetRgbBgColor(gdk.NewColor("red"))
})
// dieses event wird ausgeführt wenn auf das widget geklickt wurde
drawingarea.Connect("button-press-event", func(ctx *glib.CallbackContext) {
// Argumente holen
arg := ctx.Args(0)
// irgend son pointer auf ein objekt holen in dem mehr Infos stehen
mev := *(**gdk.EventMotion)(unsafe.Pointer(&arg))
// Position ausgeben
fmt.Println("Geklickte Position: ", p)
// hier ist meine eigene Logik:
// Wenn noch kein Klick registriert wurde ist p.x == p.y == -1 und da soll noch nichts gezeichnet werden
// erst wenn der zweite klick kommt soll zwischen diesem und dem alten eine Linie gezeichnet werden
p_neu := point{x: int(mev.X), y: int(mev.Y)}
if p.x != -1 && p.y != -1 {
pixmap.GetDrawable().DrawLine(gc, p.x, p.y, p_neu.x, p_neu.y)
drawingarea.GetWindow().Invalidate(nil, false)
}
// Position des neuen klicks speichern, es ist also der neue startpunkt der nächsten linie
p = p_neu
})
// dieses event wird ausgeführt wenn drawingarea.GetWindow().Invalidate(nil, false) aufgerufen wird
drawingarea.Connect("expose-event", func() {
if pixmap != nil {
drawingarea.GetWindow().GetDrawable().DrawDrawable(gc, pixmap.GetDrawable(), 0, 0, 0, 0, -1, -1)
}
})
// Events müssen manuell spezifiziert werden.
// Hier werden immer MASKs übergeben, hier also eben die BUTTON_PRESS_MASK,
// welche erst in einen int gecastet werden muss
drawingarea.SetEvents(int(gdk.BUTTON_PRESS_MASK))
}
示例2: Init
func Init(title string) {
gtk.Init(nil)
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
window.SetPosition(gtk.WIN_POS_CENTER)
window.SetTitle(title)
window.SetIconName("gtk-dialog-info")
window.Connect("destroy", func(ctx *glib.CallbackContext) {
fmt.Println("got destroy!", ctx.Data().(string))
gtk.MainQuit()
}, "foo")
//--------------------------------------------------------
// GtkVBox
//--------------------------------------------------------
vbox := gtk.NewVBox(false, 1)
//--------------------------------------------------------
// GtkMenuBar
//--------------------------------------------------------
menubar := gtk.NewMenuBar()
vbox.PackStart(menubar, false, false, 0)
//--------------------------------------------------------
// GtkDrawable
//--------------------------------------------------------
drawingarea := gtk.NewDrawingArea()
//var gdkwin *gdk.Window
var pixmap *gdk.Pixmap
var gc *gdk.GC
drawingarea.Connect("configure-event", func() {
println("Configuring drawingArea!")
if pixmap != nil {
pixmap.Unref()
}
allocation := drawingarea.GetAllocation()
pixmap = gdk.NewPixmap(drawingarea.GetWindow().GetDrawable(), allocation.Width, allocation.Height, 24)
gc = gdk.NewGC(pixmap.GetDrawable())
gc.SetRgbFgColor(gdk.NewColor("white"))
pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1)
gc.SetRgbFgColor(gdk.NewColor("black"))
gc.SetRgbBgColor(gdk.NewColor("white"))
pixmap.GetDrawable().DrawRectangle(gc, false, 0, 0, 10, 10)
})
drawingarea.Connect("expose-event", func() {
println("Exposing DrawingArea!")
if pixmap != nil {
drawingarea.GetWindow().GetDrawable().DrawDrawable(gc, pixmap.GetDrawable(), 0, 0, 0, 0, -1, -1)
}
})
vbox.Add(drawingarea)
//--------------------------------------------------------
// GtkScale
//--------------------------------------------------------
scale := gtk.NewHScaleWithRange(0, 100, 1)
scale.Connect("value-changed", func() {
//fmt.Println("scale:", int(scale.GetValue()))
})
vbox.Add(scale)
window.Add(vbox)
window.SetSizeRequest(600, 600)
window.ShowAll()
gtk.Main()
}
示例3: main
func main() {
gtk.Init(&os.Args)
window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL)
window.SetTitle("GTK DrawingArea")
window.Connect("destroy", gtk.MainQuit)
vbox := gtk.NewVBox(true, 0)
vbox.SetBorderWidth(5)
drawingarea := gtk.NewDrawingArea()
var p1, p2 point
var gdkwin *gdk.Window
var pixmap *gdk.Pixmap
var gc *gdk.GC
p1.x = -1
p1.y = -1
colors := []string{
"black",
"gray",
"blue",
"purple",
"red",
"orange",
"yellow",
"green",
"darkgreen",
}
drawingarea.Connect("configure-event", func() {
if pixmap != nil {
pixmap.Unref()
}
allocation := drawingarea.GetAllocation()
pixmap = gdk.NewPixmap(drawingarea.GetWindow().GetDrawable(), allocation.Width, allocation.Height, 24)
gc = gdk.NewGC(pixmap.GetDrawable())
gc.SetRgbFgColor(gdk.NewColor("white"))
pixmap.GetDrawable().DrawRectangle(gc, true, 0, 0, -1, -1)
gc.SetRgbFgColor(gdk.NewColor(colors[0]))
gc.SetRgbBgColor(gdk.NewColor("white"))
})
drawingarea.Connect("motion-notify-event", func(ctx *glib.CallbackContext) {
arg := ctx.Args(0)
mev := *(**gdk.EventMotion)(unsafe.Pointer(&arg))
var mt gdk.ModifierType
if mev.IsHint != 0 {
gdkwin.GetPointer(&p2.x, &p2.y, &mt)
} else {
p2.x, p2.y = int(mev.X), int(mev.Y)
}
if p1.x != -1 && p2.x != -1 && (gdk.EventMask(mt)&gdk.BUTTON_PRESS_MASK) != 0 {
pixmap.GetDrawable().DrawLine(gc, p1.x, p1.y, p2.x, p2.y)
gdkwin.Invalidate(nil, false)
}
colors = append(colors[1:], colors[0])
gc.SetRgbFgColor(gdk.NewColor(colors[0]))
p1 = p2
})
drawingarea.Connect("expose-event", func() {
if pixmap == nil {
return
}
gdkwin.GetDrawable().DrawDrawable(gc, pixmap.GetDrawable(), 0, 0, 0, 0, -1, -1)
})
drawingarea.SetEvents(int(gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK | gdk.BUTTON_PRESS_MASK))
vbox.Add(drawingarea)
window.Add(vbox)
window.SetSizeRequest(400, 400)
window.ShowAll()
gdkwin = drawingarea.GetWindow()
gtk.Main()
}