![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
Здравствуйте. Есть вопрос следующего плана:
Как можно создать свой графический формат *? Посоветуйте литературу или какой то хороший пример |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
1. написать спецификацию формата
2. подать заявку в РосПатент (или в другую организацию, например USPTO, etc) |
|||
|
||||
| Bladerender |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
Для начала нужно определиться, растровый это будет формат или векторный. Растровый формат будет сделать проще, так как не нужно заморачиваться с алгоритмами отображения линий, их пересечений и т.д.
Из вопроса я понял что незнаеш с какой стороны нужно думать что бы додуматься? Попробуй начать с растрового формата (каждая точка на картинке описываеться отдельно от остальных). Например можно сделать его по внутренностям как xml-файл. <?xml version="1.0" encoding="UTF-8"?> <pictureSettings> <section name = 'resolution' val="320*240"/> </pictureSettings> <points> <point r="0", g="256",b="0" /> //как бы описываем одну точку в формате RGB. <point r="256", g="256",b="15" /> //как бы описываем еще одну точку ... ... </points> </xml> Ну что-то типа такого. Понятно что твой графический формат сможет прочитать только твой графический просмотрщик (редактор). Но если он получиться зашибатый, то его поддержкой обзаведуться всякие АйСидиси и т.д. В своем просмотрщике щитываеш каждую точку и рисуеш ее на экране. Или так же ты сможеш сконвертить в свой формат картинку jpeg например, если пробежишся по всем точкам картинки и позаписываеш параметры цвета каждой точки в свой "типа xml-формат". Следующий шаг, можно, если рядом стоият точки одинакового цвета, не делать на них несколько записей, а делать одну, например <point r="0", g="256",b="0", count = "5" /> //как бы описываем 5 стоящих рядом точек. Когда дойдеш до этой строчки в своем файле, то этот параметр укажет тебе, что нужно нарисовать 5 точек подряд одного цвета. Это уже получаеться у тебя будет внедрен один из алгоритмов компресии. НУ и там уже фантазия. Можно не привызяваться к xml (что бы формат был меньшего размера), но тогда тебе нужно будет писать парсер на твоф формат и изощраться в методах сохранения информации о точках картинки. PS: Если на карсач, то и так пойдет, а если комерческое приложение, то там уже в зависимости от требований. Если маленький размер, то xml не подойдет однозначно. PPS: За обьяснения строго не судите, так как показалось что Вы начинающий программист и потому обьяснял на пальцах. |
|||
|
||||
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
Bladerender, это даже не на курсач а на лабораторную ))).
и мне надо что то простенькое лишь бы был свой формат гр.файла. а можешь дать линки в интернете где это подробнее описываться с примерами и т.д.*? а то я вообще сейчас не могу даже понять с чего начать. |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Мм. Возьми обычный бмп, сожми и зашифруй его. Вот те мегоформат. То шо надо для лабораторной ;)
-------------------- ![]() |
|||
|
||||
| Bladerender |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
Блин. Помоиму то что я написал проще не бывает. Линков дать не могу, так как это все равно что искать как открывать бутылку пива. Если не хочеш морочиться с xml, то попробую написать по шагам, что нужно делать. Все что тебе нужно знать - что в растровых графических форматах каждая точка описываеться тремя числами. Любой цвет можно получить смешав в определенных количествах красный, зеленый и голубой. Так называемое RGB (red, green, blue). Получаеться что картинку можно представить как двумерный массив точек, где каждая точка имеет 3 числа. Например вот тебе описанная картинка 3*3. [156,30,80] [29,18,58] [231,19,160] [50,95,30] [95,128,93] [34,74,23] [165,156,189][34,78,243] [5,23,78] Если будет 1024*768 то будет большая матрица. Тебе получаеться нужно просто записать информацию про точки картинки в файл, ну и конечно потом уметь прочитать эту информацию и порисовать опираясь на эту инфорацию точки. Впринцыпе это не сложно, так как в любом Canvas есть метод "Нарисовать точку" где ты передаеш туда Top и Left (координаты где будет она нарисована) и цвета в RGB, тоесть оте цифры, что ты запомнил. Вот и всё. |
|||
|
||||
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
Bladerender, то есть файл должен иметь вид
? У меня есть форма, в ней 3 поля высота, ширина и имя будущего файла. При нажатии на клавишу сохранить, срабатывает метод в котором берутся эти все значения и... не знаю что потом делать *? можешь привести пример пожалуйста Как же просмотреть такой графический формат *? Нужно писать свой графический вьювер *? |
|||
|
||||
| Bladerender |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 19.7.2007 Репутация: нет Всего: нет |
Извини что так долго не отвечал. Думал вопрос ищерпан.
Нет, не такой вид. Пиксель нельзя описать одним числом. Он описываеться тремя цветами. http://ru.wikipedia.org/wiki/Растровая_графика Пристальное внимание обрати на картинку смайлика и попытайся понять все что там нарисовано. Вот еще . http://ru.wikipedia.org/wiki/RGB Тоже почитай. По поводу того, как прочитать такой формат я уже писал выше. "Понятно что твой графический формат сможет прочитать только твой графический просмотрщик (редактор)." Дело в том, что графический формат это сельским языком "запись о каждой точке рисунка". И если твой формат может прочитать уже какой-то готовый въювер, то это уже не твой формат. Получаеться что он был создан до тебя Все остальный вопросы давай в аську. 390-304-253. Это сообщение отредактировал(а) Bladerender - 1.5.2009, 08:57 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |