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

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

Модератор: BV

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

Сообщение BV » 12.12.2005 (Пн) 4:31

2 Vinechka

Спасибо, исправил. Из тебя отличный beta-тестер ;)

2 Бяка

Уже исправил, спасибо. В любом случае хочу посмотреть на "конкурирующую фирму" :)

P.S. Идеи просьба не воровать :!:
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;

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 12.12.2005 (Пн) 5:53

Хм... Прикольно :) Вот только один вопрос Owerflow на 6х-8x увеличении потому что слишком близко? :wink:

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

Сообщение BV » 12.12.2005 (Пн) 19:54

GAGArin писал(а):Хм... Прикольно :) Вот только один вопрос Owerflow на 6х-8x увеличении потому что слишком близко? :wink:


Нет :) Потому что это: http://forum.vingrad.ru/index.php?showtopic=74010
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;

Vladimir!
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 19.09.2005 (Пн) 21:47
Откуда: Пермь

Сообщение Vladimir! » 12.12.2005 (Пн) 22:52

Круто! Мне понравилось. Молодец!

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

Сообщение BV » 12.12.2005 (Пн) 23:30

Начну продолжать...

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

Плагины разделаются на:

- "дополнительные фильтры" fil_PLUG-IN.dll
- "дополнительные типы сохранения файлов" sf_PLUG_IN.dll

Плагины автоматически распознаются по наличию в названии fil_ или sf_ соответственно.
К каждому типу плагинов свои требования, которые подробно описаны в примерах.
Буду благодарен, если кто напишет один или несколько плагинов для программы.

Передав в командную строку ключ -AP_LOCKPAINT можно отключить любое редактирование (см. ключ LockPaint в AltPaint.ini). Ключ можно передавать с любым количеством файлов и в любом месте строки.

[новая версия ниже]
Последний раз редактировалось BV 14.12.2005 (Ср) 3:01, всего редактировалось 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;

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

Сообщение Бяка » 14.12.2005 (Ср) 1:28

BV писал(а):2 Бяка

Уже исправил, спасибо. В любом случае хочу посмотреть на "конкурирующую фирму" :)

P.S. Идеи просьба не воровать :!:


Идеи не ворую :wink: (плагины я до конкура небуду подключать :roll: а потом может и сопру чтото)

кину свой паинт сразу, как только решу проблэм с компиляцией проекта!!! :!:

там у меня глюк какойто странный : короче при запуске из под среды ФБ - работает зашибись!
но откомпилированный проект глючит неподетски! при загрузке рисунака, ну например 800х600 он его уменьшает в 4 раза и зиливает им пикчурбокс (4 уменьшеных рисунка )
такаяже бяка и при попытке просто порисовать на новом листе . гад сразу рисует в 4 местах!
ничего не пойму! :cry:
кому интерестно то могутут скриншЁт псматеть

да ещё при зуме выше 8х у меня чёто сам ВБ выполняет недопустимую операцию и своачивается в трубочку(ну это мелачи)
У вас нет доступа для просмотра вложений в этом сообщении.

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

Сообщение BV » 14.12.2005 (Ср) 2:58

2 Бяка

Попробуй пошагово писать *.log.
Последний раз редактировалось BV 14.12.2005 (Ср) 3:51, всего редактировалось 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 » 14.12.2005 (Ср) 2:59

Продолжаем.

Теперь введены изменения в тип sf_*.dll, заменённый на lsf_*.dll. Всё подробно описано в примере такого плагина. Работа с fil_*.dll плагинами останется прежней и меняться не будет. Изменена и проверка/регистрация библиотек.

[новая версия ниже]
Последний раз редактировалось BV 23.12.2005 (Пт) 22:26, всего редактировалось 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;

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

Сообщение Бяка » 14.12.2005 (Ср) 3:18

глюк втом что в скомпиленая прога уменьшает рис в 4 раза и 4 раза повтосяет (последовательно ) на пиктуребох :cry: (красную надпись не считать я ёё в простом паинте добавил)

какаято проблэмс с GetDIBits и SetDIBitsToDevice!

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

Сообщение BV » 23.12.2005 (Пт) 22:23

Обновление AltPaint - Beta 3

Уточнения...

* Правка>Дополнительно>Очищать область за выделением - если установлено, изображение за выделением закрашивается в цвет фона, если нет, идёт простое копирование выделенной части
* Ctrl и Shift при применении текста создают эффект тени дополнительного цвета
* простое нажатие мыши на индикаторах текущих цветов (те, что слева от палитры) меняет их цвета местами
* Plug-in модули вызываются только при открытии/сохранении файла не в формате BMP и при вызове окна Фильтры
* в командую строку можно передать много файлов, каждый откроется в своём окне, ключи из командной строки применятся ко всем копиям

Прошу посмотреть, может что не работает или работает не так.


[Скоро релиз...]
Последний раз редактировалось BV 27.12.2005 (Вт) 1:55, всего редактировалось 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;

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

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

гдето я эти новшества видел :?

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

Сообщение BV » 27.12.2005 (Вт) 1:56

И где? :|
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;

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 27.12.2005 (Вт) 2:07

Кинь плиз мне сорцы...Старые.Хочу посмотреть
#define ROFL 0xDDDD

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

Сообщение BV » 27.12.2005 (Вт) 4:20

Погоди, эту сделаю, вышлю.

С другой стороны:

- могу дать исходники MS PaintBrush (C++)
- могу дать исходники ещё двух альтернатив MSPaint (на VB)
- могу послать к примерам по графике
- могу послать в поиск
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;

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 27.12.2005 (Вт) 11:50

Понимаешь...Мне надо чтобы чёрно белую рисовалку сделать и потом можно было сохранить в TGA 8 Bit GreyScale
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 27.12.2005 (Вт) 11:52

Так что сам реши! Но лучше я думаю исходники двух альтернатив MSPaint на VB. Заранее спасибо!
:wink:
#define ROFL 0xDDDD

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;

Пред.След.

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

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

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

    TopList