16 мая 2013 г.

C# + Cairo + Gtk = Node editor, продолжаем практику )))

Я потратил крайне много времени на то, чтобы разобраться с прозрачностью в Cairo...
Вроде все просто, но ничего не удавалось.

И вот настал момент прозрения...
Первоначальный исходник за который я уцепился был не очень корректным и ввел меня в заблуждение.

Я полагал, что возможно создать несколько DrawingArea, спокойно наслоить их друг на друга (находясь в пространстве контейнера Fixed) и радоваться результатам - это глупо.

В результате я кардинально пересмотрел подход к созданию GUI и нашол интересное решение.

Теперь все решает класс Node, созданный на основе EventBox. Это такой виртуальный верхний слой, который считает данные, следит за мышкой, реагирует на события.

Малейшее изменение в этом слое влияет на нижний слой - DrawingArea и тут происходит все рисование.

Если кто-то захочет поспорить или предложить лучшее решение - я буду рад, пишите комментарии.

А пока вот такой результат:


Здесь демонстрируется пространство 2000х2000px и работа двух самостоятельных объектов Node, связанных 1 ниткой.

Работает очень быстро. Это радует...
На видео есть небольшое торможение, но это связано только с захватом видео, которое пожирает все ресурсы, в реальности все двигается исключительно быстро.




Комментариев нет:

Отправить комментарий