LINUX.ORG.RU

Пишу графический редактор. Как лучше запрограммировать инструменты.

 ,


0

3

Привет. Пишу простой графический редактор типа Paint.Net на Qt C++. Подскажите как лучше реализовать инструменты. На данный момент они у меня реализованы по-быстрому,прямо в коде виджета-холста, через enum и блоки switch. Теперь вот хочу добавить к инструментам функционал (кисти,трансформации, копирование в буфер обмена) и переделать это на объектах. Может быть что-нибудь подскажете...

★

Напиши лучше mspaint, прям один в один, всё равно твой уникальный редактор пропадет среди тысяч других. За за mspaint тебе благодарная виндусячья публика отольёт чё-нибудь в граните. В историю войдешь, на полном серьёзе.

ilovewindows ★★★★★
()

То, что ты хочешь, называется «полиморфизм».

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

+1, идея хороша - сделать свой mspaint аналог, кроссплатформенный разумеется

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от ilovewindows

всё равно твой уникальный редактор пропадет среди тысяч других

Да ладно. Может, просто учится человек.

anonymous
()
Ответ на: комментарий от ilovewindows

уникальный редактор пропадет среди тысяч других.

Где эти тысячи? Время от времени на лоре ищут простой граф.редактор типа паинт.нет И кроме пинты и mtpaint больше ничего не находится.

Это лор...

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Есть же в KDE, назывется Kolour Paint.

Правда после того, как в KDE пришла школота (со времён KDE 4 то бишь), он никак не развивается.

EXL ★★★★★
()

По идее, каждый инструмент должен быть классом, наследующим общий интерфейс. Виджет работает с текущим инструментом и передает ему события мыши, клавиатуры, вызывает draw(). Инструмент может генерить собственные события, показывать меню и т.д. Мне видится как-то так.

anonymous
()
Ответ на: комментарий от EXL

он никак не развивается

А что там развивать?

Он в кде-3 был вполне отличной заменой паинта винды-ХР и используется в школах.

ЗЫ: А вообще, конечно, в линуксе чего-то между гимпом и колорпаинт нету...

Есть в линуксе mtpaint, всем хорош, да только интерфейс вырвиглазный...

А этот паинт-нет на моне...

Так что если pup_kin не бросит затею на полпути и его редактор не пополнить кучу недоделок, не будет вырвиглазным и глючным, да еще будет собираться и на Qt4... Будет востребовано...

anonymous
()

Прошу тебя, умоляю, не пиши всякий треш, который окажется никому не нужный еще одни недоделанным говноредактором, напиши аналог или просто клон Sketches Pro.

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

Sketches

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

Ты напишешь самую необходимую программу для творчества на линуксе, т.к. Krita пошла не туда, дико отяжелела, стала неюзабельной из-за своей тяжелости и сложности, про GIMP нечего говорить, MyPaint не пробовал.

slon ★
()

переделать это на объектах

Почему не сделать инструменты внешними скриптами? На каком-нибудь lua например. Кладешь в каталог инструментов скрипт инструмента, он добавляется на панель, показывает свои настройки и делает что-нибудь полезное.

Deleted
()

Я писал такой, когда учился в качестве большой лабораторной работы на 1 семестр (даже не курсач), всё просто - реализуешь поддержку слоев и объектов, один из которых в твоём случае холст (редактор векторный или растровый?) (ну или выделением по рамке объект делаешь/выбираешь несколько объектов), затем даешь к выделенным объектам матричные преобразования - вуаля, у тебя есть гауссово размытие, инструмент для исправления перспективы, всякие искажения и прочее. Для кистей у тебя кисть должна быть объектом и ты должен программно рисовать пиксели в нужных местах сетки (или выбиарть точки и векторизовать изображение, такого я не делал, поэтому сходу не скажу, как, а изобретать с нуля/гуглить нужные алгоритмы надо время и это труд, который ты мне не оплачиваешь), тут с алгоритмами я тебе не помогу.

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

Шумы + матричные преобразования + велосипеды + немного физики для определения радиуса размытия/смешения цветов + чуток матана и смекалки.

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

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

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

Живее всех живых.

К тому же написать программу, которая будет собираться как на Qt4, так и на Qt5, достаточно просто.

hobbit ★★★★★
()

Вот писал бы ты музыкальный плейер, тебе бы сразу сказали — ненужно, а тут вон, оказывается, даже дефицит :-).

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

Живее всех живых.

Авторы его забросили.

достаточно просто

Только если игнорировать все новые фичи.

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

MyPaint не пробовал.

А зря, подходит лучше всего.

olibjerd ★★★★★
()

Пишу графический редактор. Как лучше запрограммировать инструменты.

Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы...

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

В 10 венде прекрасный пейнт, буквально эталон пейнтов с которым ни один пейнт даже близко не стоит.

anonymous
()

ну, для начала рекомендую покурить Qt Plug & Paint example

shty ★★★★★
()
Последнее исправление: shty (всего исправлений: 1)
Ответ на: комментарий от peregrine

А ещё бы, чтобы все накладываемые преобразования были недеструктивными (сохраняются все оригинальные данные и параметры, а когда нужно рендерится результат). В само ядро с самого начала заложить этот функционал.

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

Там значит изначально что-то сильно оптимизировали/упростили.

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

В 10 венде прекрасный пейнт, буквально эталон пейнтов с которым ни один пейнт даже близко не стоит.

Враки!

Оно не эталон

Юзвери тащат старый экзешник из их любимой икспишечки так как им этот новый не нравится и для них он очень сложен :)

anonymous
()
Ответ на: комментарий от RazrFalcon

Для новый компьютеров проблем нет, а для старых - есть.

Кроме того, на старых компьютерах и дистрибутивы не всегда свежие - там вообще нет Qt5 ...

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

Да-да, а на еще более старых и Qt4 нет, давайте все писать на Qt3!

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

Почему меня должны заботить некрофилы.

Ну и о каких проблемах идёт речь? XP-шечка не поддерживается?

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