LINUX.ORG.RU

[GTK][Cairo][Кактус]Рисование

 , ,


0

0

В продолжение http://www.linux.org.ru/view-message.jsp?msgid=4229586&lastmod=1258125502806 Осилил Cairo, осилил более-менее GTK, но не могу осилить ихнее взаимодействие. Кто может поделится ссылкой на хелоуворлд с использованием Cairo в GTK ?

Ответ на: комментарий от unrealix

Без английского тебе будет трудно.

А сам на меня ругался, что я начинал с С# и gtk#. И паскаль ругал. Эх ты!!! :-)

hibou ★★★★★
()
Ответ на: комментарий от unrealix

>//Оригинал на английском не осилил :)

я где-то тредом ниже кидал архив с переводом документации cairo/gtk и других кошерных вещей.

mono ★★★★★
()
Ответ на: комментарий от hibou

>Без английского тебе будет трудно.

не пугай человека.. я начинал программировать без знания английского, трудно, но вполне возможно. Зато растет скилл поиска переводов.

постепенно учишься читать тех.документацию.

mono ★★★★★
()
Ответ на: комментарий от hibou

>Без английского тебе будет трудно.

меня напугал не английский, а то что подход к земным вещам начинается с космоса :)

unrealix
() автор топика
Ответ на: комментарий от unrealix

>Хоть там и много букв РАЗНЫХ, всё-таки попробую

там все просто.. создается GObject на основе GtkDrawningArea, потом переопределяется метод отрисовки.. и именно там находится код взаимодействия с Cairo.

Делай по аналогии.

mono ★★★★★
()
Ответ на: комментарий от mono

>я начинал программировать без знания английского

я в 9м класе тоже не знал английский, когда клепал на говно-Delphi :)

unrealix
() автор топика
Ответ на: комментарий от unrealix

>меня напугал не английский, а то что подход к земным вещам начинается с космоса :)

что ты имеешь в виду?

mono ★★★★★
()
Ответ на: комментарий от mono

Ээ... это он сразу в создание своих GObject полез? На чистом Си?!

Воистину, каждый прокачивается как может.

hibou ★★★★★
()
Ответ на: комментарий от hibou

>Ээ... это он сразу в создание своих GObject полез? На чистом Си?!

нет, он вроде в Cairo полез.. просто делать что-то рисующее на cairo в gtk лучше через создание наследника GtkDrawningArea и если делать по аналогии, то все просто и ясно.. Во внутренности GObject'а лезть не требуется.

mono ★★★★★
()
Ответ на: комментарий от mono

>что ты имеешь в виду?

Я имел ввиду то что в том мануале для того чтобы понять хау ту его сделать, нужно произвести небольшой Brain Fuck :)

unrealix
() автор топика
Ответ на: комментарий от unrealix

Сначала просто набери этот пример и поиграйся с ним, потом по аналогии свое сделай.. так проще.

mono ★★★★★
()
Ответ на: комментарий от mono

>Сначала просто набери этот пример и поиграйся с ним, потом по аналогии свое сделай.. так проще.

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

unrealix
() автор топика
Ответ на: комментарий от unrealix

позапрошлым летом я действовал именно так же, долго изучая внутренности GObject'ов.. так что удачи :)

mono ★★★★★
()
Ответ на: комментарий от mono

Курю-курю я этот мануал и никак не могу понять смысл строчек:
#define EGG_TYPE_CLOCK_FACE (egg_clock_face_get_type ())
#define EGG_CLOCK_FACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_CLOCK_FACE, EggClockFace))
#define EGG_CLOCK_FACE_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), EGG_CLOCK_FACE, EggClockFaceClass))
#define EGG_IS_CLOCK_FACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_CLOCK_FACE))
#define EGG_IS_CLOCK_FACE_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), EGG_TYPE_CLOCK_FACE))
#define EGG_CLOCK_FACE_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_CLOCK_FACE, EggClockFaceClass))

unrealix
() автор топика
Ответ на: комментарий от mono

В общем прикрутил я этот пример к своему проекту. Теперь маюсь тем как научится рисовать на нём из main(). Сделал глобальную переменную cairo_t *cr, а проэкт и запуске сегфолтится. ЧЯДНТ ?

unrealix
() автор топика
Ответ на: комментарий от unrealix

>Теперь маюсь тем как научится рисовать на нём из main()

зачем? рисовать в gtk можно только в обработчике expose_event, т.е взаимодействие с cairo должно быть только там. И это правильно.

mono ★★★★★
()
Ответ на: комментарий от mono

Значит я сто-то не допёр :) Просто я рисую трехугольник Серпинского, он же врактал. И мне по нажатию батона нужно как-то перерисовывать с учётом нового поколения. Как вручную вызвать expose?

unrealix
() автор топика
Ответ на: комментарий от unrealix

Эх.. иди в гугль. Я уже не помню.. но как-то можно.

mono ★★★★★
()
Ответ на: комментарий от mono

вот точно не так... там есть специальные ф-и для перерисовки, с указанием области.


ты скажи зхоть в каком разделе ф-ций искать

unrealix
() автор топика
Ответ на: комментарий от unrealix

Если ты рисуешь на GtkDrawinArea, то соответственно передаешь cairo ссылку на объект GdkWidow, значит нужно искать в разделе GdkWidow

Смотрим, и видим метод gdk_window_invalidate_rect ()

http://www.gtk.org/api/2.6/gdk/gdk-Windows.html#gdk-window-invalidate-rect

http://vaslinux.ifolder.ru/12637387 - вот еще раз ссылка на переводы гнутой документации.. Там gtk тоже есть.

Но вообще очень аккуратно играйся с отрисовкой/перерисовкой.

mono ★★★★★
()
Ответ на: комментарий от unrealix

>Заработало :)

Поздравляю!

//GTK кал редкостный :)

А мне нравится. Удобная и простая (если понимать) штука.

mono ★★★★★
()
Ответ на: комментарий от unrealix

>в Delphi я за 30 минут наклепал бы, а тут 4 дня.

хе-хе... тут тоже есть графический клепатель форм - Glade.

Я тоже раньше на дельфи программировал, но сейчас Gtk/GLib нравится больше всех инструментов, особенно если писать на Vala.

mono ★★★★★
()
Ответ на: комментарий от unrealix

Тебе ж 4 дня потребовалось на обучение.

Mono уже сказал тебе про Glade. И на самом деле вот эта связка инструментария Gtk - она очень и очень гибкая. Можно программировать на любом из поддерживаемых языков. И можно программировать отдельно - интерфейс и саму реализацию приложения.

hibou ★★★★★
()
Ответ на: комментарий от unrealix

Посмотри просто другие проекты. Я сейчас использую только Си в своих программах.

Если нужно совсем близко к делфи - пробуй monodevelop. Там та же связка, просто тесно интегрирована.

hibou ★★★★★
()
Ответ на: комментарий от unrealix

даже автоматом пишет autogen. Вот это да :)

unrealix
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.