Рисование поверх изображения в GoGtk3 - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь получить изображение, которое будет скрыто темной "тенью", которую можно выборочно удалить (например, перетаскивая на нее мышь). (аналогично тому, как у вас есть тень во многих играх RTS, которая удаляется при изучении карты)

Я пытался использовать DrawingArea, но не смог найти способ импортировать в него изображение (даже больше поэтому: я даже понятия не имею о том, как его нарисовать).

После этого я подумал, что может быть проще просто отобразить изображение с помощью ImageWidget, а затем использовать Overlay, чтобы поместить DrawingArea поверх этого, чтобы я мог скрыть изображение.

Мне удалось отобразить изображение и добавить рисование области в наложение, но я не знал, как добавить наложение в виджет «Изображение». (И также до сих пор не знаю, как бы я рисовал на DrawingArea).

Что у меня есть:

    box := setup_box(gtk.ORIENTATION_VERTICAL)
    daShadow, err := gtk.DrawingAreaNew()
    if err != nil {
        log.Fatal("Unable to create shadow:", err)
    }
    imgMap, err := gtk.ImageNewFromFile("barley.jpg")
    if err != nil {
        log.Fatal("Unable to create img:", err)
    }
    ol, err := gtk.OverlayNew()
    if err != nil {
        log.Fatal("Unable to create overlay:", err)
    }

    ol.AddOverlay(daShadow)    //Place DrawingArea on Overlay? But how to place Overlay on the image?


    box.Add(imgMap)
    box.Add(ol)      //This is probably wrong?

Кто-нибудь знает, как мне этого добиться? (Я также открыт для альтернативных методов)

...