Создание средства для визуальной работы с объектами

CoderA

Местный
Товарищи крутые .Net разработчики, подкиньте мудрых мыслей по поводу следующией проблемы ...

Требуется разработать средство для визуальной работы с объектами, по функциональности схожее с редактором диаграмм классов в VS.
Т.е. имеется n, взаимосвязанных друг с другом, объектов. Требуется представить объекты и связи в графическом виде, представить посльзователю возможность удобно размещать графические представления на поле диаграммы, выделять объекты и связи, удалять связи и создавать новые ...
Вся бизнес логика готова и в настоящее время реализуется через обычные формочки ...

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

зы:
готовые решения с открытиыми исходниками преветствуются :lol:
 

notacat

Местный
вроде у Visio есть интерфейс, с которым можно работать. Как раз под такую задачу - вставляешь себе их ActiveX или что там есть и в нем рисуешь.
 

sami

Местный
Товарищи крутые .Net разработчики, подкиньте мудрых мыслей по поводу следующией проблемы ...
Боюсь, что не совсем по адресу... Гуру и зубров надо искать на rsdn.ru (сегодня лежит), gotdotnet.ru, sql.ru и т.п.

Требуется разработать средство для визуальной работы с объектами, по функциональности схожее с редактором диаграмм классов в VS.
Т.е. имеется n, взаимосвязанных друг с другом, объектов. Требуется представить объекты и связи в графическом виде, представить посльзователю возможность удобно размещать графические представления на поле диаграммы, выделять объекты и связи, удалять связи и создавать новые ...
Вся бизнес логика готова и в настоящее время реализуется через обычные формочки ...

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

зы:
готовые решения с открытиыми исходниками преветствуются :lol:
Готовых решений не знаю, но это не значит, что их нет.
Что-то, от чего можно оттолкнуться (типа набросков) можно поискать на codeproject.com, решение под ключ там врядли найдется, а если вдруг найдется, то маловероятно, что оно будет открытым.
Думаю, что искать нужно в направлении EMF/WMF редакторов, потом точить их под себя. Но есть риск потерять больше времени, чем писать с нуля. Вообще тут много факторов.

Что значит "в каком направлении копнуть для решения данной задачи"? Речь идет о копании в сторону самостоятельного решения? Если да, то в чем недостаток, чего конкретно не хватает для решения задачи, литературы, идей, рук?
 

SCTRWD

Местный
Боюсь, что не совсем по адресу... Гуру и зубров надо искать на rsdn.ru (сегодня лежит), gotdotnet.ru, sql.ru и т.п.

Грузишь свой проект в одну из IDE, которая умеет рисовать взаимосвязи.

Готовых решений не знаю, но это не значит, что их нет.
Что-то, от чего можно оттолкнуться (типа набросков) можно поискать на codeproject.com, решение под ключ там врядли найдется, а если вдруг найдется, то маловероятно, что оно будет открытым.
Думаю, что искать нужно в направлении EMF/WMF редакторов, потом точить их под себя. Но есть риск потерять больше времени, чем писать с нуля. Вообще тут много факторов.

EMF/WMF редакторы тут вряд ли помогут. Вообще, что имеется ввиду: разработка визуального интерфейса вообще, или для конкретной задачи?
 

CoderA

Местный
еще раз попробую сформулировать задачу ... есть классы, реализующие слой бизнес-логики. Также есть стандартный пользовательский интерфейс, основанный главным образом на таблицах ... все работает и основную задачу решает ... НО все это табличное хозяйство абсолютно ненаглядно (типа в табличке 1 выбираем экземпляр А, в табличке 2 выбираем экземпляр Б, в табличке 3 отображаются параметры их связи ... количество таких взаимосвязанных экземпляров от 2 до нескольких десятков) ... естественно пользователю гораздо удобней будет работать не с таблицами, а с графическим представлением данных в виде графа ... вот начал думать как это хозяйство реализовать ...

а идей не хватает ... на gotdotnet.ru видел подобный вопрос ... без ответа <_<

пока наметилось несколько способов решения

1. у меня есть базовый CAD пакет и я могу в нем все это рисовать ... мне этот способ не нравится
2. графические представления наследуются от UserControl, разукрашиваются и просто раскладываются на форме ... этот способ я попробовал ... вроде бы получается, но по-моему это не очень правильный путь
3. просто рисовать средствами GDI+
4. (с подсказки sami ... близкий к 3, но менее трудозатратный) поискать библиотеку для работы с EMF/WMF и рисовать с помощью её

спасибо всем за внимание <_<
 

sami

Местный
еще раз попробую сформулировать задачу ... есть классы, реализующие слой бизнес-логики. Также есть стандартный пользовательский интерфейс, основанный главным образом на таблицах ... все работает и основную задачу решает ... НО все это табличное хозяйство абсолютно ненаглядно (типа в табличке 1 выбираем экземпляр А, в табличке 2 выбираем экземпляр Б, в табличке 3 отображаются параметры их связи ... количество таких взаимосвязанных экземпляров от 2 до нескольких десятков) ... естественно пользователю гораздо удобней будет работать не с таблицами, а с графическим представлением данных в виде графа ... вот начал думать как это хозяйство реализовать ...
Из описанного понятно только что нужно как минимум кликабельное представление отношений объектов, как максимум - вполне интерактивное для создания объектов/связей.
Непонятно, какого уровня требуется решение: подсобно-хозяйственное (все средства хороши), либо какое-то промышленное/лицензионно чистое/ориентированное на возможность установки клиентам?

а идей не хватает ... на gotdotnet.ru видел подобный вопрос ... без ответа <_<

пока наметилось несколько способов решения

1. у меня есть базовый CAD пакет и я могу в нем все это рисовать ... мне этот способ не нравится
Чем конкретно не нравится? Тем что клиентам надо ставить CAD, или сложностью взаимодействия с ним?

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

3. просто рисовать средствами GDI+
Потенциально самый гибкий путь, но не самый простой. Рисовать - просто, обеспечить кликабельность - чуть сложнее, организация интерактивности - не столь сложно, сколько трудоемко. Придется решить массу интересных и не очень проблем аки хиттестинг, слои кэширования, мухлеж с буферизацией, арсеналы мышинных инструментов типа pan/zoom, point/select, драг/друп, работа с пивотами... Все это, конечно, уже давно решенные проблемы, но вот соединить это все гармонично в единое целое - задача не из простых.

4. (с подсказки sami ... близкий к 3, но менее трудозатратный) поискать библиотеку для работы с EMF/WMF и рисовать с помощью её
Здесь все зависит от везения. Таких библиотек не очень много, скорее всего они спроектированы для решения конкретных целей - редактирования метаграфики. Шанс наткнуться на подходяющую библиотеку с развитым API невелик. Наверняка придется ее поначалу подпиливать, а потом и развивать в нужном русле.

Но опять таки, рисовать - это чисто визуализация. Если есть четкое представление о том, что и как придется рисовать, то большой разницы нет, в чем это рисовать, в Word-е, в Visi, в CAD-е, в GDI+ или EMF редакторе. Исходить надо из того, откуда проще получать обратную связь для получения кликабельности представления, и в дальнейшем с ориентацией на полную интерактивность представления (если оно надо).
 

SCTRWD

Местный
4. (с подсказки sami ... близкий к 3, но менее трудозатратный) поискать библиотеку для работы с EMF/WMF и рисовать с помощью её

Здесь все зависит от везения. Таких библиотек не очень много, скорее всего они спроектированы для решения конкретных целей - редактирования метаграфики. Шанс наткнуться на подходяющую библиотеку с развитым API невелик. Наверняка придется ее поначалу подпиливать, а потом и развивать в нужном русле.

Но опять таки, рисовать - это чисто визуализация. Если есть четкое представление о том, что и как придется рисовать, то большой разницы нет, в чем это рисовать, в Word-е, в Visi, в CAD-е, в GDI+ или EMF редакторе. Исходить надо из того, откуда проще получать обратную связь для получения кликабельности представления, и в дальнейшем с ориентацией на полную интерактивность представления (если оно надо).

Таких библиотек практически нет, поскольку EMF/WMF формат не является объектным, а просто напросто содержит закодированную последовательность GDI+ вызовов с конкретными значениями параметров. И создаются WMF файлы той же процедурой, что и оконная графика, только контекст устройства подменяется на Metafile. Программа отображения EMF/WMF файлов всего лишь "проигрывет" эту последовательность, при необходимости задав матрицу трансформации для устройства. Так что рисовать в GDI+ и использовать Metafile - суть одно и тоже.

Также рисовать можно при помощи библиотеки GD, в PostScipt/PDF, SVG, Flash и т.д. Хотя, конечно, я бы рекомендовал именно в MS Visio. Он и рулится легко и там можно реализовать многое из того, что нужно.
 

sami

Местный
Таких библиотек практически нет
Вы искали?

поскольку EMF/WMF формат не является объектным, а просто напросто содержит закодированную последовательность GDI+ вызовов с конкретными значениями параметров. И создаются WMF файлы той же процедурой, что и оконная графика, только контекст устройства подменяется на Metafile. Программа отображения EMF/WMF файлов всего лишь "проигрывет" эту последовательность, при необходимости задав матрицу трансформации для устройства. Так что рисовать в GDI+ и использовать Metafile - суть одно и тоже.
Вы довольно точно описали формат хранения метафайлов, однако из этого описания никак не следует вывод о том, что библиотек для интерактивного редактирования EMF/WMF "практически нет". Их есть, и их практически много (http://www.google.com/search?q=emf+editor). Проблема найти среди них редактор с открытыми исходниками на .net. Уверен, что есть и такие. Проблем с чтением и интерпретации EMF формата нет, т.к. есть спецификация, есть даже интерпретаторы, которые "проигрывают" метафайлы на высокоуровнемом абстрактном устройстве. Для превращения последовательности вызовов GDI в набор графических примитивов достаточно только реализовать абстрактное устройство.

А потом, что такое "объектный формат" в Вашем понимании, и чем НЕ объектный формат мешает работать с этим форматом?

(Это я уже просто флейм включил, докопался до утверждения что таких библиотек практически нет. Вряд ли это поможет топикстартеру.)

Также рисовать можно при помощи библиотеки GD, в PostScipt/PDF, SVG, Flash и т.д.
Согласен, но для .net-а это уже экзотика, особенно GD и SVG. А GD - это разве не растровая графика?

Хотя, конечно, я бы рекомендовал именно в MS Visio. Он и рулится легко и там можно реализовать многое из того, что нужно.
Согласен. Вопрос только в том, насколько допустимо использование этого пакета в разрабатываемом софте. В стандартный пакет офиса Visio не входит. Если софт подразумевает большое кол-во клиентов, то Visio сильно осложнит распространение.
 

SCTRWD

Местный
А потом, что такое "объектный формат" в Вашем понимании, и чем НЕ объектный формат мешает работать с этим форматом?

А это и есть ответ на Ваши замечания. "НЕ объектный" означает "плоский" формат. То есть тупое: поставил кисточку в определённое место, провёл кисточкой до определённого места и т.д.. И всё. Никаких "объектов" там нет, просто последовательность движений кисточкой.

Редактор же подразумевает наличие иерархии поименованных объектов со своими свойствами, взаимоотношениями и т.д. Но формат WMF этого не позволяет.

Согласен, но для .net-а это уже экзотика, особенно GD и SVG. А GD - это разве не растровая графика?

Ну, если .net не позволяет использовать сторонние библиотеки, тогда о чём вообще весь сыр бор?
При помощи GD можно на лету генерить графику в требуемом разрешении и в требуемых размерах. Это растровая графика? :huh:

Согласен. Вопрос только в том, насколько допустимо использование этого пакета в разрабатываемом софте. В стандартный пакет офиса Visio не входит. Если софт подразумевает большое кол-во клиентов, то Visio сильно осложнит распространение.

Тады можно генерить простой HTML со скриптами ;) Или что то ещё.
 

sami

Местный
А это и есть ответ на Ваши замечания. "НЕ объектный" означает "плоский" формат. То есть тупое: поставил кисточку в определённое место, провёл кисточкой до определённого места и т.д.. И всё. Никаких "объектов" там нет, просто последовательность движений кисточкой.

Редактор подразумевает наличие иерархии поименованных объектов со своими свойствами, взаимоотношениями и т.д. Но формат WMF этого не позволяет.
Почему не позволяет? Да, он не хранит имена объектов, но чем это мешает прочитать объект "прямоугольник" и работать с ним интерактивно? Взаимоотношения объектов можно прописывать записями EMR_BEGINPATH/EMR_ENDPATH. Имена в EMF_COMMENT. Конечно, для полноценного редактирования требуется хранить гораздо больше информации, чем кодируется в EMF. Но в EMF информации достаточно, чтобы можно было взять любой корректный EMF файл и извлечь из него информацию о примитивах. Любую другую информацию, необходимую редактору можно хранить в любом удобном формате, хоть тот же xml.

Но я предложил EMF редакторы не из-за их возможности создавать и редактировать EMF файлы, а потому что в них реализована функциональность редактора векторных объектов, т.е. создание примитивов, драгэнддруп, хиттестинг, временные слои, инструменты выбора примитивов, подсветка выбранных объектов, группировка, инструменты для манипуляций примитивами (изменение размеров, формы линий) и т.п. Я предложил отталкиваться от реализованной функциональности.

Ну, если .net не позволяет использовать сторонние библиотеки, тогда о чём вообще весь сыр бор?
Дотнет позволяет использовать сторонние библиотеки. Вопрос в цене. Любые библиотеки на дотнете приклеиваются "затак". С COM-ом и ActiveX дотнет "на ты", и с любой корректно написанной библиотеке на COM никаких проблем не возникает. Некорректные библиотеки COM тоже можно использовать, правда приходится их wrapp-ить частично либо полностью. dll-ки с API функциями прикручиваются более трудоемко. Все остальное прикрутить тоже можно, но это уже из разряда садомазы, т.к. будет требовать разработки прослойки.

А сыр-бор тут о том, что решение требуется именно для дотнета (как я полагаю, ведь обращение было к дотнетчикам)!

При помощи GD можно на лету генерить графику в требуемом разрешении и в требуемых размерах. Это растровая графика? :huh:
По форматам изображений, которые генерит GD ( PNG, JPEG and GIF ) я полагаю, что растровая. Но если GD позволит генерить то, чем можно манипулировать как набором примитивов более высокоуровневыми чем пикселями, то это подойдет.

Тады можно генерить простой HTML со скриптами ;) Или что то ещё.
Проблема не в том, чтобы отобразить граф объектов. Если бы требовалось только отобразить, вполне можно было бы воспользоваться GDI+, доступ к которому в дотнет интегрирован.
Топикстартеру нужна функциональность аки в построителе диаграмм классов в Visual Studio. Близкие аналоги - Visio, Visual Paradigm, Rational Rose, т.п.
Вы считаете, что что-то аналогичное можно сделать на GD?
На HTML со скриптами, это теоретически сделать можно, но вот трудозатраты будут несопоставимы с тем, чтобы написать необходимую функциональность с нуля самому используя подручные средства дотнета!
 

CoderA

Местный
2SCTRWD вопрос в том, что нужна .net обертка, обеспечивающая интерактивную работу конечного пользователя с графическими представлениями объектов, как замена текстово-табличного интерфейса ... вокруг чего сделана эта обертка пофиг ...

http://www.vgdotnet.com/downloads.shtml вот вобщем-то то что мне нужно (см. DragDropSample) ... используется SVG

зы: только открытое и бесплатное :huh:
 

SCTRWD

Местный
Почему не позволяет? Да, он не хранит имена объектов, но чем это мешает прочитать объект "прямоугольник" и работать с ним интерактивно? Взаимоотношения объектов можно прописывать записями EMR_BEGINPATH/EMR_ENDPATH. Имена в EMF_COMMENT. Конечно, для полноценного редактирования требуется хранить гораздо больше информации, чем кодируется в EMF. Но в EMF информации достаточно, чтобы можно было взять любой корректный EMF файл и извлечь из него информацию о примитивах. Любую другую информацию, необходимую редактору можно хранить в любом удобном формате, хоть тот же xml.

Но я предложил EMF редакторы не из-за их возможности создавать и редактировать EMF файлы, а потому что в них реализована функциональность редактора векторных объектов, т.е. создание примитивов, драгэнддруп, хиттестинг, временные слои, инструменты выбора примитивов, подсветка выбранных объектов, группировка, инструменты для манипуляций примитивами (изменение размеров, формы линий) и т.п. Я предложил отталкиваться от реализованной функциональности.

Так понятно, то есть подразумевается некая программа - посредник. А то я не понимал, потому что при сохранении в WMF на диске всё это пойдёт лесом.

Дотнет позволяет использовать сторонние библиотеки. Вопрос в цене. Любые библиотеки на дотнете приклеиваются "затак". С COM-ом и ActiveX дотнет "на ты", и с любой корректно написанной библиотеке на COM никаких проблем не возникает. Некорректные библиотеки COM тоже можно использовать, правда приходится их wrapp-ить частично либо полностью. dll-ки с API функциями прикручиваются более трудоемко. Все остальное прикрутить тоже можно, но это уже из разряда садомазы, т.к. будет требовать разработки прослойки.

Да я и не сомневался, что может. Потому и удивлялся..

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

Конечно не позволит. Речь шла о другом. Если прога может генерить контент в любом заданном Вами разрешении, то это - по сути вектор.

Проблема не в том, чтобы отобразить граф объектов. Если бы требовалось только отобразить, вполне можно было бы воспользоваться GDI+, доступ к которому в дотнет интегрирован.
Топикстартеру нужна функциональность аки в построителе диаграмм классов в Visual Studio. Близкие аналоги - Visio, Visual Paradigm, Rational Rose, т.п.
Вы считаете, что что-то аналогичное можно сделать на GD?
На HTML со скриптами, это теоретически сделать можно, но вот трудозатраты будут несопоставимы с тем, чтобы написать необходимую функциональность с нуля самому используя подручные средства дотнета!

Да ну что Вы, если нуно просто что то тупо нарисовать, то достаточно и GD. А если с функциональностью - я сам предложил Visio. Ну не катит, так не катит.
 

CoderA

Местный
тема вобщем-то разжевана в инете ... всем спасибо ... сорри за беспокойство
 

sami

Местный
Так понятно, то есть подразумевается некая программа - посредник. А то я не понимал, потому что при сохранении в WMF на диске всё это пойдёт лесом.
А сохранение вроде и не требовалось.

Конечно не позволит. Речь шла о другом. Если прога может генерить контент в любом заданном Вами разрешении, то это - по сути вектор.
Если прога работает с примитивами такими как точки, линии, сплайны и многоугольники, для представления изображений, то это векторная прога. Если она работает с матрицей пикселей - растровая. Фотошоп - растровая прога. Корел - векторная. По сути и та и другая может генерить контент в любом разрешении, так что разрешение здесь не критерий.
 

SCTRWD

Местный
А сохранение вроде и не требовалось.


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

Немного не так. Контент есть контент, он никак не привязан к разрешению. И с чем там и как работает программа - не важно. И с какими там "примитивами" программа работает и работает ли она вообще с какими-то там "примитивами" - не важно. Главное - может ли программа выдавать разную картинку в зависимости от разрешения.

Фотошоп НЕ МОЖЕТ генерить контент в другом разрешении, кроме как указанном в исходном файле. Вы можете изменить разрешение в пикселях с применением алгоритмов интерполяции, но это уже будет совсем ДРУГОЕ изображение и совсем другая песня..
 

sami

Местный
Немного не так. Контент есть контент, он никак не привязан к разрешению. И с чем там и как работает программа - не важно. И с какими там "примитивами" программа работает и работает ли она вообще с какими-то там "примитивами" - не важно. Главное - может ли программа выдавать разную картинку в зависимости от разрешения.
В предыдущем посте у Вас была немного другая формулировка (перечитайте).
Но этот вариант тоже хромает: уверяю Вас, Фотошоп выдает разную картинку в зависимости от разрешения, хотя бы потому, что разрешение у картинки другое!

Фотошоп НЕ МОЖЕТ генерить контент в другом разрешении, кроме как указанном в исходном файле. Вы можете изменить разрешение в пикселях с применением алгоритмов интерполяции, но это уже будет совсем ДРУГОЕ изображение и совсем другая песня..
Открываете фотошопом bmp файл размером X*X. Потом растягиваете его в Z раз, получаете разрешение другое, чем в исходном файле! Да оно интерполировано, но согласно Вашему предыдущему критерию, это не помеха. Если мы применим к интерполированному разрешению операцию Gaussian Blur или один из Noise-ов, то получим уже вовсе не интерполирванную картинку, а гораздо более интересную, которая удовлетворит и последний Ваш критерий "векторности". Странно, мы вроде бы одного, растрового мнения о Фотошопе, но Ваши критерии упрямо делают его векторным.

Вот общепринятый критерий (http://en.wikipedia.org/wiki/Vector_graphics):
Vector graphics is the use of geometrical primitives such as points, lines, curves, and shapes or polygon(s), which are all based on mathematical equations, to represent images in computer graphics.

Vector graphics formats are complementary to raster graphics, which is the representation of images as an array of pixels, as it is typically used for the representation of photographic images.
Здесь (http://en.wikipedia.org/wiki/Image_file_formats#Vector_formats) по форматам хранения.
Мне кажется, что они адекватны.
Впрочем, согласно этим критериям , GD, как и GDI сложно отнести строго к какому-то классу. Это растеризаторы (плоская их разновидность), т.е. они принимают shape-ы и выдают растры. GDI тут лишь чуть-чуть более векторный за счет дополнительной фичи - записи последовательности команд в векторный файл. GD как и GDI можно применить в качестве основы для построителя диаграмм. Но у GDI в аспектах задачи несколько преимуществ:
* .net имеет встроенную обертку над GDI (GD тоже имеет обертку, правда для mono, и чтобы прикрутить ее к дотнету придется еще повозиться)
* GDI работает с аппаратной поддержкой, следовательно будет шустрее в интерактивном приложении
* GDI на несколько голов мощнее GD (хоть и имеет некоторые противные ограничения, которые не сказываются в desktop приложениях)

Итого, насколько я понимаю, при написании "средства для визуальной работы с объектами" под дотнетом, выбор между GDI и GD не стоит.
 

SCTRWD

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

Ну, перечитал. Никаких нестыковок не увидел. Было бы проще, если бы Вы приводили цитаты. То что Фотошоп выдаёт разную картинку для разных изображений - даже не смею возрожать, это истинная правда.

Открываете фотошопом bmp файл размером X*X. Потом растягиваете его в Z раз, получаете разрешение другое, чем в исходном файле! Да оно интерполировано, но согласно Вашему предыдущему критерию, это не помеха. Если мы применим к интерполированному разрешению операцию Gaussian Blur или один из Noise-ов, то получим уже вовсе не интерполирванную картинку, а гораздо более
интересную, которая удовлетворит и последний Ваш критерий "векторности". Странно, мы вроде бы одного, растрового мнения о Фотошопе, но Ваши критерии упрямо делают его векторным.

Ну, если применение чего-то там вдруг сделало интерполированное изображение - не интерполированным, то это что то новое в теории обработки изображений.

Вот общепринятый критерий (http://en.wikipedia.org/wiki/Vector_graphics):

Не знаю, где он там "общепринятый". Если программа способна адаптировать вывод своего контента под разные разрешения - это векторная графика. Вам ли не безразницы, как именно эта программа называется: Illustrator, Flash, ACDSee или же - Моя_супер_пупер_прога? И как она там хранит свои данные?

При помощи GD Ваша программа может генерить разный вывод для разных разрешений. А, сохранив его в GDI, эту миссию она перекладывает на другие программы, только и всего.

Итого, насколько я понимаю, при написании "средства для визуальной работы с объектами" под дотнетом, выбор между GDI и GD не стоит.

Да я и не спорил. GDI в Windows среде предпочтительней. Если это и является окончательной целью, то - вперёд и с песней. А если это многоплатформенный проект - про GDI лучше забыть.
Не то что это вообще невозможно, но огромную часть аудитории Вы полюбому потеряете.
 

sami

Местный
Ну, перечитал. Никаких нестыковок не увидел. Было бы проще, если бы Вы приводили цитаты. То что Фотошоп выдаёт разную картинку для разных изображений - даже не смею возрожать, это истинная правда.
Если прога может генерить контент в любом заданном Вами разрешении, то это - по сути вектор.
Ваше утверждение? Из него не следует, что любая смотрелка jpg файлов векторная?

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

Не знаю, где он там "общепринятый". Если программа способна адаптировать вывод своего контента под разные разрешения - это векторная графика. Вам ли не безразницы, как именно эта программа называется: Illustrator, Flash, ACDSee или же - Моя_супер_пупер_прога? И как она там хранит свои данные?
Сошлитесь на общепринятый. Хоть на какой-нибудь источник, отличный от Вашей фантазии. Для меня это будет знаком, что Вы все-таки не выдумываете определения и критерии на ходу <_<

При помощи GD Ваша программа может генерить разный вывод для разных разрешений. А, сохранив его в GDI, эту миссию она перекладывает на другие программы, только и всего.
Что значит сохранив его в GDI? какие другие программы? О чем вообще речь?

Да я и не спорил. GDI в Windows среде предпочтительней. Если это и является окончательной целью, то - вперёд и с песней. А если это многоплатформенный проект - про GDI лучше забыть.
Не то что это вообще невозможно, но огромную часть аудитории Вы полюбому потеряете.
Если проект реально межплатформенный, то и про .NET надо забыть, если только речь не идет о веб сервисе, которому не нужен GUI.
 

SCTRWD

Местный
Ваше утверждение? Из него не следует, что любая смотрелка jpg файлов векторная?

1.Моё утверждение!
2. Нет, НИЧЕГО подобного из него НЕ следует.

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

Это - вопрос? Утверждение? Или что, вообще?

Сошлитесь на общепринятый. Хоть на какой-нибудь источник, отличный от Вашей фантазии. Для меня это будет знаком, что Вы все-таки не выдумываете определения и критерии на ходу <_<

Я уже дал чёткое определение векторной программы. И не один раз. В качестве источника можете взять ЛЮБОЙ СВОЙ источник - это программа, считывающая некие данные и выводящая картинку в зависимости от указанного разрешения. Все Ваши "источники" подпадают под это определение. В чём у Вас непонятки?

Что значит сохранив его в GDI? какие другие программы? О чем вообще речь?

О Metafile, вестимо ;)

Если проект реально межплатформенный, то и про .NET надо забыть, если только речь не идет о веб сервисе, которому не нужен GUI.

А что у нас только .NET может создавать GUI?! Удивили, если честно...
 

sami

Местный
1.Моё утверждение!
2. Нет, НИЧЕГО подобного из него НЕ следует.
см ниже

Это - вопрос? Утверждение? Или что, вообще?
Не обращайте внимания.


Я уже дал чёткое определение векторной программы. И не один раз. В качестве источника можете взять ЛЮБОЙ СВОЙ источник - это программа, считывающая некие данные и выводящая картинку в зависимости от указанного разрешения. Все Ваши "источники" подпадают под это определение. В чём у Вас непонятки?
Вот и покажите хоть один источник, который бы утверждал выделенное. В моих источниках такого нет.
Очередной раз Вы привели определение, под которое попадает даже вьюер jpeg файлов. Он что-то читает, а потом выводит картинку, в зависимости от разрешения (монитора, окна). По Вашему определению jpeg-вьюер - векторная программа. Если Вы так не считаете, потрудитесь опровергнуть, исходя из собственного определения. А лучше не стоит.

А что у нас только .NET может создавать GUI?! Удивили, если честно...
Удивляете именно Вы! Способностью к неочевидным выводам. Как Вы смогли сделать вывод о том что только .NET может создавать GUI из утверждения о том, что .NET не следует использовать для разработки межплатформенных программ (если речь идет не о веб сервисах, которым GUI не нужны)?

Поясню свою мысль про дотнет: Вообще-то, если Вы до сих пор не заметили, в этом топике обсуждается решение для дотнет проекта. Строчка ".Net" встречается в заголовке топика, в первом посте, и потом еще немного. А раз речь идет про дотнет, то крайне маловероятно, что речь идет о межплатформенном софте. Область применения дотнет программ еще уже, чем у виндовых программ, т.к. наличе платформы дотнет является дополнительным обязательным требованием к наличию винды. По сути даже дотнет приложения далеко не всегда переносимы между разными версиями винды, т.к. рантайм немного отличается в разных версиях винды. То что идет под XP, может не пойти под Win2000 и под Vista, и уж наверняка не пойдет под любой другой осью, кроме винды. Дотнет приложения так же не являются напрямую совместимы с платформой mono, которая распространена под Linux-ами.
Все это я пишу к тому, что о межплатформенности до Вас никто и не помышлял. Терять огромную часть аудитории тоже никто не собирался, т.к. той части аудитории, что не использует винду с дотнетом, просто нет (если я не прав, пусть топикстартер меня поправит).
Вот потому в ответ на Ваше утверждение, что для многоплатформенного проекта нужно забыть про GDI, я и ответил, что для многоплатформенного проекта следует забыть и про дотнет.
Но Ваш вывод про .net и GUI, сделанный из моего утверждения чуть не сломал мне мозг <_<

Давайте сойдемся на том, что Ваша логика для меня непостижима (не берусь утверждать абсолютную непостижимость), постигать ее у меня желания нет, убеждать Вас в чем-то - тоже. Потому считаю нашу беседу пустым (для меня, опять таки) времяпровождением.
За сим откланиваюсь.
 
Сверху