Альтернатива рисования...

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 27.12.2005 (Вт) 21:47

Ну вот, пожалуй, и версия 1.1.

Сделал всё, что хотел сделать, большую часть того, что просили другие, и то, что в планы вообще не входило :)


Изменения с выделением - если держать Shift, с выделения на холст будет перерисовано с прозрачным цветом (второй цвет палитры), иначе выделение применится с прозрачностью 0-255 (последнее поле в "Параметрах инструментов"), изменения с Zoom - рисовать можно практически всем и в любом из выбранных масштабов, изменения с Line, Rectangle, Round Rectangle при Shift.

[новая версия ниже]
Последний раз редактировалось BV 22.01.2006 (Вс) 23:25, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 29.12.2005 (Чт) 0:47

Да, только заметил - плагин загрузки и сохранения в формат TGA (lsf_TGA в папке Plug-ins), если указать опцию "Серые тона", сохранит в 8-битном формате. Исходники плагина в архиве, там же можно исправить.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 02.01.2006 (Пн) 4:22

Да..., вдохновляет...
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 04.01.2006 (Ср) 1:41

Memfivosfey писал(а):Да..., вдохновляет...


В хорошем смысле слова?

FleX_2004 писал(а):Короче все заменяйте MSPaint.exe на AltPaint.exe =)


Ничего заменять не надо :)


Новый плагин: "Фильтр - эффект кнопки".
Достаточно извлечь в папку Plug-ins (или какая там назначена).

[новая версия ниже]
Последний раз редактировалось BV 22.01.2006 (Вс) 23:25, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 04.01.2006 (Ср) 2:39

Memfivosfey писал(а):
Да..., вдохновляет...


В хорошем смысле слова?


Пойти напится.... :lol: Шутка....


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

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 05.01.2006 (Чт) 1:41

Ещё одно дополнение...

В архиве новый плагин для чтения/сохранения в PNG + патч AltPaint.
Там исправлены все найденные ошибки и недоработки.

[новая версия ниже]
Последний раз редактировалось BV 22.01.2006 (Вс) 23:24, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 06.01.2006 (Пт) 6:02

Чтобы помочь тебе в разработке продукта (вдруг из него чё-нить получицца?), расскажу что мне нравится, а что нет в пайнте, и зачем я вапще его использую.

Чаще всего я включаю пайнт, когда меня взбесил фотошоп, а надо нарисовать картинку практически попиксельно (есть у меня прога для пиксельарта - ГрафиксГейл - но она мне не нравицца).
Ещё часто включаю пайнт, когда надо сохранить скриншот (в более общем случае битмап из буфера обмена).

Плюсы:
+ Удобство рисовать попиксельно с зумом и предпросмотром
+ Жутко простая прога
+ Рисуя фигуры с шифтом и контролом можно рисовать линии, наклонные к сторонам картинки на угол кратный 45 градусам, и возможность рисовать квадраты и круги без выверения мышой.
+ Настраиваемая палитра, которая находится всёвремя в тулбаре
+ Из меню можно сразу приаттачить картинку в новое письмо в theBat (только что заметил эту функцию).
+ Функции "Вставить из файла" и "Копировать в файл"

Минусы:
- Писать текст можно только с нулевым зумом
- Ундо левелов всего 3
- Кучу памяти жрёт (ниогда больше фотошопа, хотя у него своя система распределения памяти)
- Нет многооконного интерфейса
- Окно предпросмотра совершенно неудобное и глючит
- Стандартные действия типа изменения размеров картинки (обрезание / увеличивание рабочей площади, растягивание / сжимание) не достаточно функциональны.
- Палитру, которую сделал в одной картинке, приходится делать заново в другой
- Распечатывает криво - какой бы маленькой картинка не была - всёравно печатается на двух страницах.
Я знаю верный путь

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 22.01.2006 (Вс) 22:57

И так...

За этот месяц масштабных, или просто значимых изменений не было. Не было, потому как проект тестировался. Исправлялись старые ошибки, появлялись новые... Ну куда же без этого :)
В целом получился неплохой результат.


Инструменты...

С Ctrl и/или Shift практически все инструменты переходят в другой режим. Либо в момент рисования, либо в момент применения текста или выделения, или при их перемещении можно использовать клавиши, работающие в разные моменты по-разному.
Чтобы применить многоугольник, достаточно нажать правую кнопку мыши, кривая же применится сразу, как будут даны 4 точки.


Атрибуты...

Если выделение имеет место, атрибуты берутся именно его, и применяются к нему. Однако, отменить такие изменения будет невозможно.


Фильтры...

Равно как и Атрибуты, фильтры применяются и к выделению, если оно есть. Встроенные фильтры - лишь основа, куда более широкую функциональность дают плагины fil_ (Filter). В архив включен SDK по созданию плагинов lsf_ и fil_ типов.

И Фильтры и Атрибуты не работают в режиме масштаба или при LockPaint.


Форматы сохранения...

Основной формат, встроенный в программу - BMP, остальное зависит от плагинов типа lsf_ (Load/Save File). Как они работают? При любом открытии файла AltPaint проверяет наличие плагинов, после сравнивает расширение файла и то, что поддерживает каждый плагин. При совпадении управление передаётся плагину.


Разное...

Для печати в командную строку можно передать как стандартную команду AltPaint (-AP_PRINT), так и стандартную MSPaint (/P). Для блокировки редактирования команду –AP_LOCKPAINT.
Передавать можно с любым количеством файлов, но печать применится лишь к первому.
Каждый файл будет открыт в новом окне AltPaint. То же будет происходить при Drag&Drop файлов из проводника.
Режим/стиль рисования (на панели инструментов) равен изменению свойств PictureBox DrawStyle и DrawMode, так что для рисования той же пунктирной линии достаточно выбрать режим Dot, и размер линии 1.


Скачать полную версию


Теперь...
Кто обходясь только средствами AltPaint нарисует впечатляющий рисунок на любую тему (сохранить лучше в JPG), получит весь исходный код проекта
:)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 23.01.2006 (Пн) 7:24

BV пошли меня к примерам по графике

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 23.01.2006 (Пн) 16:03

Зачем? Скажи, что нужно, дам ссылку на исходник.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 26.01.2006 (Чт) 1:05

Ну что, так никто своё "Фи" о проекте не скажет :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 26.01.2006 (Чт) 16:02

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

2) если поставить кисть по больше и 1 раз нажать на холст вместо квадрата рисуеся круг

3) не возможно за 1 раз нарисовать угол в 90 градусов ннормально

4) при рисовании и ногда видно что перед рисовонием квадрата рисуеся крест

5) при выделении и переносе части рисунка этот участок просто копируется (хотя может там есть опция где это выбирается)

и еще не понятно зачем нужна рамка которую можно растягивать
если при ее растяжении размер рисунка не увеличивается

вот рисунок

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 26.01.2006 (Чт) 17:38

Так... Кое-что ошибками не является, другое не до конца ясно, точнее совсем не ясно.

1) MSPaint при движении мыши рисует не квадратной кистью. Я рисую квадратной из соображений, скажем, большей корректности.

2) Быть не может... У меня повторить не получилось.

3) Смотри пункт 2.

4) Вообще трудно понять. Квадрата из Rectangle + Shift, или квадрата кисти? При каком состоянии DrawMode и DrawStyle холста? При какой скорости рисования и что было предыдущим инструментом?

5) Ctrl+B или Правка>Дополнительно>Очищать область за выделением

6) Растягивать выделение нельзя, лишь зону выделения, но она ничего не содержит. В общем аналогично пункту 2.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 26.01.2006 (Чт) 18:03

ну незнаю
сейчас еще раз по пробывал все так же
1) не понял ответа (проверил и при большем размере кисть все тоже самое - главное бысто мышь тащить)(квадраты то не одинаковые)
2) при 1 клике рисуеся круг
3) и как я понял при рисовании квадратной кистью рисуется не квадрат а линия вследствии чего так и получается при рисовании углав 90 градусав - сначало горизонтальные линии потом вертикальные в следствии чего "уголка" и не хватает
4) вытекает из 3 пункта

насчет рамки я имел ввиду рамку холста не понятно зачем она
(я подумал сначало что можно несколько карти нок загрузить- не получилось)

win xp sp2

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 26.01.2006 (Чт) 18:36

Насчёт п.1 понял, посмотрю.
В остальном - смотри видео:
У вас нет доступа для просмотра вложений в этом сообщении.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 27.01.2006 (Пт) 17:03

ты тоже смотри )) :)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 27.01.2006 (Пт) 17:21

Нет слов... :?

У кого-нибудь ещё такое наблюдалось?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 27.01.2006 (Пт) 22:36

Посмотри такой подход. Лучше?

[новая версия ниже]
Последний раз редактировалось BV 30.01.2006 (Пн) 0:36, всего редактировалось 1 раз.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 28.01.2006 (Сб) 1:25

воо все работает :)
но все равно при рисовании квадратной кистью при быстром передвижении мыши остаются пробелы а не цельная линия
хотя при рисовании круглой кистью все ок

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 30.01.2006 (Пн) 0:34

Только честно - это лучше, чем было?
У вас нет доступа для просмотра вложений в этом сообщении.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 30.01.2006 (Пн) 18:18

да хорошо что кисть появилась а то я ее сразу искал в предыдущих частях :)
1) тока вот что то лагов прибавилось - иногда не понятно после чего
при быстром рисовании рисуется не сразу а через секунду после того как провел (впредыдущей части такого не было)
2) и при увеличении карандаш рисует не точно там где нажал

и еще так и не понял зачем нужна прокрука с прозрачностью
да и при рисовании кистью формы "линия в 45 градусов" присутствуют пробелы
и пятно наверно нужно "по мощнее" сделать а то полчаса размазывать надо :)

и еще стоит ли при градиенте учитывать размер кисти (при большом размере кисти прямоугольник получается со скругленными краями
и явно больше заданной рамки )


ps я наверно уже достал 8) 8)

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 30.01.2006 (Пн) 23:18

ps я наверно уже достал

:P Неаверное... Теперь меня в "ГраФИческий редактор на VB" по доставай :wink:
блин, пока сам себя непрорекламируеш нечерта неполучится!

2BV это лучше но почемуто тормазит кисть, ластик и зум :shock:

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 31.01.2006 (Вт) 0:01

Bonesnapper писал(а):ps я наверно уже достал 8) 8)


Ни в коем случае. Наоборот :)


2 Бяка

При рисовании держи Shift. Проведу оптимизацию.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 31.01.2006 (Вт) 17:24

нужно сделать чтоб кисть было видно и до начала рисования (как в пеинте) а то точность пропадает (точно не рассчитаешь нормальный ли ты выбрал размер)
нашел зачем прозрачностьнужна :D
но можно ли сделать чтоб белый цвет был прозрачным?
и копи пейт нужно на правую кнопку приделать при выделении

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 01.02.2006 (Ср) 19:16

Bonesnapper писал(а):но можно ли сделать чтоб белый цвет был прозрачным?


Можно - задай белый цвет вторым цветом линии, и при применении выделенного держи Shift. Своеобразная альтернатива произвольному выделению :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 02.02.2006 (Чт) 2:12

ничего себе как я сразу не догадался :D

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 20.02.2006 (Пн) 20:19

Ну что, я обещал в конце разработки дать код, я его дам :) Всё что нужно - адрес e-mail, на который вышлю пароль.

Исходники AltPaint: http://bv.vbland.net/Download/AltPaint_(Source_Code).rar
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Naked
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 27.10.2004 (Ср) 3:16
Откуда: Дальнегорск столица мира

Сообщение Naked » 21.02.2006 (Вт) 2:56


BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 21.02.2006 (Вт) 3:09

Выслал :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Пред.След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

    TopList