Пользователей: 0
Гостей: 260
Всего: 260

» Подробно
» Сегодня


Привет, Гость!

Ник


Пароль


Запомнить?




» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное






Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 3 из 9«123456 »Последняя
Быстрый переход:


 

Автор Сообщение
Vitek5
[1] Странник
Онлайн статус=0  Профиль    




Посты: 359
Откуда:
Занятие:
Возраст:

30-03-2010
06-03-2010 18:19 GMT3 часа #1186796   Split
singapur22 Не по теме
Где можно Unity скачать ты раньше выкладывал?В журнале.

По теме
Где можно скачать или посмотреть возможности майкросовтовского двигла сделаного на этой платформе?


В журнал добавлены 2 полезные статьи.
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
08-03-2010 11:32 GMT3 часа #1188236   Split
Выявил интересную особенность в 3D моделировании на C#. Оказалось, что порядок загрузки объектов имеет особое значение. Например. Загружаем сналача объект БТР, а после него загружаем прозрачную сферу. Получаем такую картину:



А вот такую картину получим, если БТР загрузить в последнюю очередь:



Интересно. Получается, что видимые объекты через сферу определяются в момент её загрузки, а не во время рендеринга? Или я что не допонимаю?

А вот это, вообще ни в какие рамки не лезет. Загружаем вертолёт, естественно после загрузки ландшафта. Если смотреть снаружи в лобовуху вертика, то видно поверхность ландшафта:



Хотя внутри полигоны также установлены:



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

Сообщение было успешно отредактировано singapur22 (08-03-2010 11:32 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
08-03-2010 15:15 GMT3 часа #1188704   Split
singapur22
Нда - сказать что-то определенное тоже не могу.
Кстати с двумерными объектами как то наоборот получается - более младший потомок имеет большой приоритет видимости чем более старший. То есть когда инициализируешь кнопки -в одинаковых координатах (одну под другой) - видимой будет та что дальше от корня (верха окна - а деревья насколько, я помню, в программировании растут от верха к низу)

У тебя нет рабочего примера рисования куба?
С методами вчера вроде немного разобрался - однако че-нить нарисовать не получается - выходит вовсе не трехмерный объект - пробовал пару примеров - и видимость вовсе не та что ожидалась мною.

Есть вообще разница между использованием для отрисовки Viewbox и Viewport3D ? используется как я заметил иногда и виевбокс.

Куб как я понял рисуется Rect3D - но в какие теги его заключать?
Скажем всегда ли надо начинать инициализацию с тегов
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />

(камеру в самом начале тегов опускаем как само собой разумеющееся)

и далее опять <ModelVisual3D>
<ModelVisual3D.Content>
и после
<GeometryModel3D>
<GeometryModel3D.Geometry>
далее меш с координатами - а куб куда надо будет вписывать?
<MeshGeometry3D все параметры/>
и далее материал. (или группа материалов - трансформацию пока не трогаем)

И такой вопрос - без материала объект будет невидим?

добавлено спустя 27 минут

Вот смотри - взял такой пример - я его сократил- убрал трансформацию и градиентную заливку
Отображается просто квадрат. А не куб. А как должно?
<Grid>

<DockPanel>
<Viewbox>
<Canvas Width="445" Height="445">
<Viewport3D ClipToBounds="True" Width="400" Height="400" Canvas.Left="0" Canvas.Top="10">
<Viewport3D.Camera>
<PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" />
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>


<GeometryModel3D.Geometry>
<MeshGeometry3D
TriangleIndices="0,1,2 3,4,5 "
Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 "
TextureCoordinates="0,0 1,0 1,1 1,1 0,1 0,0 "
Positions="-0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 " />
</GeometryModel3D.Geometry>


<GeometryModel3D.Material>
<MaterialGroup>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="Aqua"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</MaterialGroup>
</GeometryModel3D.Material>


</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>

</Viewport3D>
</Canvas>
</Viewbox>
</DockPanel>

</Grid>

Сообщение было успешно отредактировано erlik (08-03-2010 15:15 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
08-03-2010 16:07 GMT3 часа #1188825   Split
erlik Естественно у тебя будет отображаться только квадрат, так как треугольники ты установил только на одну сторону (два штуки). А должно быть (количество сторон * 2). Тоесть, для каждой стороны куба, 2 треугольника. Это раз. Второе, треугольники указываются не простым вводом используемых вертексов, а упорядочиванием вертексов в треугольники. Втретих, при создании вертексов, указываются не координаты сторон, а координаты углов объекта. Тоесть, у куба не 6 вертексов, а 8.

Изобразим создание куба графически:

Position: v0=(-1,1,-1); v1=(1,1,-1); v2=(-1,-1,-1); v3=(1,-1,-1); v4=(-1,1,1); v5=(1,1,1); v6=(-1,-1,1); v7=(1,-1,1);

Визуально это будет выглядеть так:



Далее, при указании треугольников, нужно отсортировать вертексы так, чтобы треугольники не пересекались и каждый треугольник смотрел наружу, а не внутрь. Чтобы треугольник смотрел наружу, вертексы для него указываются против часовой стрелки, относительно лицевой стороны плоскости. В данном случае порядок будет такой:

Treangles: t1=(0,2,1); t2=(3,1,2); t3=(0,1,4); t4=(5,4,1); t5=(4,5,6); t6=(7,6,5); t7=(2,6,3); t8=(7,3,6); t9=(1,3,5); t10=(7,5,3); t11=(0,4,2); t12=(6,2,4);

На счёт <Viewbox> не знаю, не юзал.

Цитата
И такой вопрос - без материала объект будет невидим?

Если честно, не пробывал. Но вместо текстуры можно указать цвет заливки.

P.S. Разобрался с файлами obj. Подправил парсер.dll, теперь можно подключать любые файлы obj.
Оказалось, что полигон и треугольник это разные вещи. Точнее вещь то одна и таже, но полигоны, в отличии от треугольников имеют прямоугольную форму и заключают в себе два треугольника. Нужно было лишь разбить полигон на два треугольника.

Сообщение было успешно отредактировано singapur22 (08-03-2010 16:07 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
08-03-2010 16:13 GMT3 часа #1188841   Split
singapur22
Окей. Спасибо. Буду сейчас разбираться.
Устанавливал то не я - я просто пример взял - хотел увидеть наглядное изображение. Написано было что куб а уж в кол-ве вертексов не разбирался.

А сейчас скачал готовый проект с двумя кубами - которые еще на маус даун реагируют - вот там все нормально два кубика цветных - которые еще и вращаются на нажатие.
Теперь надо разбираться как координаты правильно назначать - в этом пока мало что понимаю.

добавлено спустя 6 минут

для создания 3D объекта получается достаточно двух параметров
TriangleIndices и Positions
даже нормали не обязательны - у двух кубов которые я скачал нормали не указаны.
а в материале да просто заливка указана <DiffuseMaterial x:Name="cube1Material" Brush="Blue" />

Сообщение было успешно отредактировано erlik (08-03-2010 16:13 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
08-03-2010 16:35 GMT3 часа #1188849   Split
erlik Координаты указываются относительно центра оси будущего объекта, в метрах. Соответственно без установки перемещения объекта, ось объекта будет приравнена к оси мирового пространства. Чтобы объект после создания переместить в нужную координату нужно использовать соответствующий метод перемещения TranslateTransform3D().

добавлено спустя 3 минут

Нормали нужны для правильной отрисовки освещения DirectionalLight , PointLight, и SpotLight. Если используется освещение AmbientLight, то нормали не нужны, так как производится полное освещение.

Графически эта разница выглядит так:

поверхность без установленных нормалей:



поверхность с установленными нормалями по направлению к источнику света (направление примерное):



Как видишь, разница существенная.

Сообщение было успешно отредактировано singapur22 (08-03-2010 16:35 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
08-03-2010 16:37 GMT3 часа #1188877   Split
singapur22
Да с методами transform все более менее понятно - я их с 2D объектами всяко разно использовал - у меня в моем плеере (до сих не рабочим в плане звука) внутри летает куча объектов (треугольники, квадраты, эллипсы, полилайны ) по самым безбашенным траекториям.
применял все четыре трансформации - и всяко разно анимирвал - получилось прикольно.
теперь хочу тож самое сделать и с 3D - но как рисовать (в плане координат) вот это пока не понял.
освещение мне пока без надобности -поэтому значит нормали не нужны.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
08-03-2010 19:24 GMT3 часа #1189024   Split
erlik На счёт ViewBox:

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


Соответственно, в данном случае он бессмыслен, так как Viewport3D, помимо своих, имеет те же самые свойства.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Vitek5
[1] Странник
Онлайн статус=0  Профиль    




Посты: 359
Откуда:
Занятие:
Возраст:

30-03-2010
08-03-2010 20:13 GMT3 часа #1189069   Split
На диске её можно гденибудь купить?А то качать много.


В журнал добавлены 2 полезные статьи.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
09-03-2010 23:24 GMT3 часа #1189838   Split
singapur22
Заработал у меня плеер. Оказывается надо было установить 10 версию или выше Windows Media Player - так как Windows Presentation Foundation для воспроизведения файла запускает в фоновом режиме исполнимый модуль этого проигрывателя.
Почему не ниже 10 версии фиг знает - но у меня явно ниже была. Я то по наивности полагал что у меня винда давно обновила его до последней версии - оказалось фиг вам. Пришлось скачивать.

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

добавлено спустя 9 минут

перемотку вот так делал
Код:
//получаем позицию слайдера
                double pos = slider2.Value;
                //получаем общую проддолжительность медиа файла
               Duration dur = pleer.NaturalDuration;
             
               if (dur.ToString() != "Automatic")
              {
                 
                 double d = pleer.NaturalDuration.TimeSpan.TotalSeconds;

                  Clock.Text = string.Format("{0:00}:{1:00}", pleer.Position.Minutes, pleer.Position.Seconds);
                  pleer.Position = new TimeSpan(Convert.ToInt64(pos * d));
                  pleer.Play();
}


добавлено спустя 4 минут

а движение по ходу воспроизведения так
Код:
void clock_timer(object obj, EventArgs e)
        {
            Duration dur = pleer.NaturalDuration;
           
if (dur.ToString() != "Automatic")
            {
               
            slider2.Value = pleer.Position.TotalSeconds / pleer.NaturalDuration.TimeSpan.TotalSeconds;
  Clock.Text = string.Format("{0:00}:{1:00}", pleer.Position.Minutes, pleer.Position.Seconds);
}


добавлено спустя 13 минут

ура прокрутка получилась!
double pos = slider2.Value;

Duration dur = pleer.NaturalDuration;

if (dur.ToString() != "Automatic")
{

double d = pleer.NaturalDuration.TimeSpan.TotalSeconds;

Clock.Text = string.Format("{0:00}:{1:00}", pleer.Position.Minutes, pleer.Position.Seconds);
double a = Convert.ToInt64(pos * d);
pleer.Position = TimeSpan.FromSeconds(a);
pleer.Play();
}


даже без конвертации работает
pleer.Position = TimeSpan.FromSeconds(slider2.Value * pleer.NaturalDuration.TimeSpan.TotalSeconds);

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

Осталось как то вывести в текстблок полное время (NaturalDuration) айдиофайла.
А то пока там у меня только время по ходу воспроизведения.
Вот блин - зато теперь пауза не работает при автоматическом движении ползунка. А на стоп все сначала начинается. Надо как у тебя проверок понаставить

Сообщение было успешно отредактировано erlik (09-03-2010 23:24 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
09-03-2010 23:54 GMT3 часа #1189937   Split
erlik Вот и отлично. А я снова переключился на 3D. Пытаюсь произвести полный парсер файлов *.obj, и прилагающиеся к ним файлы материала *.mtl

Разобрался с *.obj уже на 90%. Остаются только две неясности, которые в принципе никакого значения в данном случае не имеют. Но хотелось бы с ними разобраться, для общего развития. Думаю, в последствии ответы найдутся сами собой.

С *.mtl пока разбор произведён на 15%
Единственное, что я смог оттуда выпарсить, это пути к текстурам и цвета заливок:

newmtl 01___Default
Ns 10.00
Ni 1.50
d 1.00
Tr 0.00
Tf 1.00 1.00 1.00
illum 2
Ka 0.00 0.00 0.00
Kd 0.59 0.59 0.59
--основной цвет заливки
Ks 0.00 0.00 0.00
Ke 0.00 0.00 0.00
map_Ka D:\Resources\textures\fx_lavahell1.png
--?
map_Kd D:\Resources\textures\fx_lavahell1.png --путь к основной текстуре

Остальное пока под вопросом.

Сообщение было успешно отредактировано singapur22 (09-03-2010 23:54 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
09-03-2010 23:51 GMT3 часа #1189941   Split
так вроде настроил. А теперь вопрос дня: а плейлист то как реализовать? С самого начала знал что это будет самое сложное - но так как пришлось решать проблемы другого свойства - алгоритм так и не составил...

добавлено спустя 2 минут

singapur22
дак а сам что не рисуешь 3D-шки?

....Знаю знаю - очень сложно - пытался вот вчера пирамидку фигову нарисовать и то не вышло. Пока не вышло.

Сообщение было успешно отредактировано erlik (09-03-2010 23:51 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
10-03-2010 00:06 GMT3 часа #1189978   Split
erlik
Цитата
дак а сам что не рисуешь 3D-шки?
Да не реально всё это. Можно конечно нарисовать простые примитивы. Но не более. Более сложные объекты создаю в 3DsMax, экспортирую их в формат obj и подключаю к C#. Вот этот путь я и пытаюсь воссоздать. Существует ещё возможность сохранения анимации для экспортированного объекта в отдельном файле. Но этим я займусь после решения назначенных в настоящий момент задач.

С плэй листом не сильно сложно. У меня есть тестовый плеер (создавал ещё в первые дни изучения) на основе WindowsForms. Там мне удалось создать плэйлист, со всеми нужными событиями (переключение на следующую композицию при завершении текущей, автозапуск с первой композиции, навигация по плэйлисту, и т.д. и т.п) Если нужно, могу скинуть исходник.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
10-03-2010 00:14 GMT3 часа #1189984   Split
singapur22
Понятно. Ну я примитивы хочу пока освоить, а там поглядим что будет дальше интересно.

Исходник, конечно скидывай - а то я пока вообще не представляю как это делается.

добавлено спустя 2 минут

кстати почему в этом опен диалоге нельзя выделить сразу несколько файлов? Когда виндовский плеер открываешь - там в окне диалога можно скока хочешь файлов выделить для загрузки - а здесь только один. Странно.

Сообщение было успешно отредактировано erlik (10-03-2010 00:14 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
10-03-2010 00:54 GMT3 часа #1190024   Split
erlik Почему нельзя? Ещё как можно. Для этого нужно поставить соответствующий флажок в свойствах OpenDialog. Кароче, смотри исходник:
_http://ifolder.ru/16766713


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
10-03-2010 16:41 GMT3 часа #1190312   Split
singapur22
спасибо.
Так и думал что Multiselect нужно в труе выставить.
...начал ковырять класс Forms и увидел что там немало неизвестных мне компонентов - надо будет опробовать.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
10-03-2010 16:51 GMT3 часа #1190325   Split
erlik А то. Я с WindowsForms и начинал. С ним гораздо проще работать. Даже в свойствах компонентов, в отличии от Wpf, для каждого элемента выводятся описания и допустимые значения.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
10-03-2010 19:23 GMT3 часа #1190448   Split
singapur22
Сделал плейлист правда пришлось чуток помучиться.
метод AddRange - есть у кого угодно, но только не у класса контролс.
для листбокса класса контролс пришлось так делать
string[] fnames = OpenDialog.FileNames;
foreach (string x in fnames)
{
box.Items.Add(x);
}

Но я не понял почему в позициях отображается не только имя композиции, а весь путь к ней?
(заменил листбокс на комбо - он как то лучше смотрится)

Сообщение было успешно отредактировано erlik (10-03-2010 19:23 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
11-03-2010 15:29 GMT3 часа #1190938   Split
erlik А чё тут не понятного? OpenDialog возвращает пути к файлам, позволяющий наблюдать их визуально. Этим всё и объясняется. Если хочешь вывести только названия файлов, то используй парсер строк string.Split(...):

Код:
string[] fnames = OpenDialog.FileNames;
string[] separator = new string[] { @"\" } //массив разделителей, нам нужен только один.

foreach (string x in fnames)
{
string[] ElementsPath = x.Split(separator, System.StringSplitOptions.RemoveEmptyEntries);
box.Items.Add(ElementsPath.Length - 1);
...
}




Данный метод Split(...), возвращает строковый массив, содержащий подстроки строки, над которой производится операция, разделённые элементами заданного массива строк = separator.
Соответственно, понадобится дополнительный виртуальный список, который будет содержать полные пути к файлам под теми же индексами, что и названия файлов в списке box. Дабы можно было открывать файлы при операциях в онном.

Сообщение было успешно отредактировано singapur22 (11-03-2010 15:29 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
11-03-2010 19:34 GMT3 часа #1191245   Split
singapur22
А как сохранять нужные данные? допустим ту же табличку с путями файлов - чтобы при загрузке приложения плейлист автоматом заполнялся теми файлами которые туда были записаны в прошлый раз.
Методов сохранения пока вообще нигде не встречал - в каком неймспейс их искать?


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
11-03-2010 21:46 GMT3 часа #1191322   Split
erlik А System.IO... у тебя на что?

Кстати. А ты с пространством имён System.IO.IsolatedStorage не работал? Содержит классы и методы управления изолированными файлами. В частности (создание, запись, чтение).

Сообщение было успешно отредактировано singapur22 (11-03-2010 21:46 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
11-03-2010 21:48 GMT3 часа #1191399   Split
singapur22
Писать данные в файл что ли? А других методов разве нет?

добавлено спустя 4 минут

а я думал что есть какие нить специальные storag'ы как в аннотейшин...

Сообщение было успешно отредактировано erlik (11-03-2010 21:48 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
11-03-2010 21:51 GMT3 часа #1191405   Split
erlik А других способов и не имеется. В любом случае, во всех медиаплеерах для этого создаются плэйлисты в виде файлов, содержащие в себе пути к выбранным медиафайлам. Да и вообще, как ты представляешь себе сохранение данных без создания отдельного файла при закрытии програмки?

Ты с пространством имён System.IO.IsolatedStorage не работал? Содержит классы и методы управления изолированными файлами. В частности (создание, запись, чтение). Пытаюсь с ним щас работать. Выявляется много непонятков.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
11-03-2010 22:29 GMT3 часа #1191441   Split
singapur22
Да в том то и дело что никак не представляю потому и спрашивал. Запись в файл это первое что мне в голову пришло - но я подумал что это наверно не то...
IsolatedStorage в первый раз слышу - и даже найти пока не могу среди IO .
я пока чтением и записью в xml занимался - чтение просто, а вот создать объемный xml через процедурный код - совсем другая история. вручную куда легче...

добавлено спустя 2 минут

ага так это значит отдельное namespase - а не член IO .

Сообщение было успешно отредактировано erlik (11-03-2010 22:29 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
11-03-2010 22:48 GMT3 часа #1191460   Split
erlik Вот и я тебе говорю. Это не возможно.

IsolatedStorage -- плохо искал. Это одно из пространств имён сборки mscorlib, как и недавно изученный тобой Collections.Generic.

Основные классы:

System.IO.IsolatedStorage.IsolatedStorage -- Представляет область изолированного хранения, содержащую файлы и папки.

System.IO.IsolatedStorage.IsolatedStorageFileStream -- Представляет файл в изолированном хранении.

Основная непонятка. Где производится сохранение? И как попасть в данную область изолированного хранения из консоли Windows? Просмотрел весь скрытый AppData, но созданной мной области я там не нашол. Хотя прога мою область находит. Возникает вопрос. Где именно сохраняется изолированная область, если не в AppData?

Цитата
ага так это значит отдельное namespase - а не член IO .

Эх ты. Я же тебе сказал, что это пространство имён, а не член IO.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
11-03-2010 23:12 GMT3 часа #1191483   Split
System.IO.IsolatedStorage.IsolatedStorageFileStream вот это непонятно - написано нужно указать путь path - указываю путь как в стриме

IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(@"D:\test\test.doc",
FileMode.Open,
FileAccess.Read,
FileShare.Read);

выдает ошибку что данный формат пути не поддерживается.

а для чего я вот это написал вообще не понял
IsolatedStorageFile isofile = IsolatedStorageFile.GetStore(IsolatedStorageScope.Roaming, isoStream);

А что такое AppData?


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
11-03-2010 23:41 GMT3 часа #1191488   Split
Ха! Надыбал такую установку:

IsolatedStorageScope.Roaming -- Изолированное хранилище может быть помещено в расположение файловой системы, способной перемещаться (если разрешено перемещение данных пользователя в основной операционной системе).

Это что же получается? Изолированное хранилище вообще не относится к файловой системе Windows, а представляет собственную (индивидуальную) файловую систему? Если так, то всё понятно и имеющиеся вопросы отпадают сами собой.

добавлено спустя 13 минут

erlik

AppData -- скрытая папка в User.

Причина ошибки в том, что такие пути не поддерживаются данным классом. Вот мой пример:

Код:
//определяем изолированную область.

IsolatedStorageFile ISF = IsolatedStorageFile.GetStore(
                IsolatedStorageScope.User |
                IsolatedStorageScope.Assembly |
                IsolatedStorageScope.Roaming,
                null,
                null);

//создаём директорию (папку) в изолированной области.

            ISF.CreateDirectory("arhive");
           
//создаём и(или) открываем указанный файл.
            IsolatedStorageFileStream ISFS = new IsolatedStorageFileStream(
                   "arhive\\data.txt",
                    System.IO.FileMode.OpenOrCreate);

//записываем в файл один бит данных.
            ISFS.WriteByte(220);

//закрываем файл. Операция обязательна, для сохранения данных.
            ISFS.Close();

//снова открываем файл.
            ISFS = new IsolatedStorageFileStream(
                   "arhive\\data.txt",
                   System.IO.FileMode.Open);

//считываем с файла один бит данных
            int i = ISFS.ReadByte();

//выводим данные в консоль
            Console.WriteLine(i);

//притормазим выполнение программы
            Console.ReadKey();

Сообщение было успешно отредактировано singapur22 (11-03-2010 23:41 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
11-03-2010 23:56 GMT3 часа #1191535   Split
singapur22
че то у меня и такой путь не хочет поддерживаться
нашел шаблоны путей - но нифига не понял
это для XP
Перемещаемые хранилища =

<КОРНЕВАЯ ПАПКА>\Profiles\<пользователь>\Application Data

Неперемещаемые хранилища =

<КОРНЕВАЯ ПАПКА>\Profiles\<пользователь>\Local Settings\Application Data
А если Profiles - то бишь профилей у меня на компе нет? и пользователь соответственно я один - то как тогда?


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
12-03-2010 00:13 GMT3 часа #1191559   Split
erlik Фиг его знает. У меня Виста, и всё работает пучком.

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

У меня например доступ к скрытой папке AppData производится таким образом:

Пуск/поиск "C:\Users\User\AppData\"

Но можно в свойствах папок установить флажок "показывать все скрытые папки и файлы".


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 46

18-03-2015
12-03-2010 01:09 GMT3 часа #1191578   Split
singapur22
сделал немного по другому - теперь не ругается
IsolatedStorageFile isofile = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly |
IsolatedStorageScope.Roaming,
null,
null);
isofile.CreateDirectory("mydir");

IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("test.doc", FileMode.Create, isofile);

добавлено спустя 21 минут

ну наконец то получилось целый файл записать в хранилище.

добавлено спустя 14 минут

а файл оказался у меня по такому пути
C:\Documents and Settings\@\Application Data\IsolatedStorage\Url.fw4jkawu35hbvafpykoqe5knorspinji\AssemFiles\

а если еще директорию свою указывать "mydir\\test.doc"
тогда еще и в ней.

Сообщение было успешно отредактировано erlik (12-03-2010 01:09 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"


Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 3 из 9«123456 »Последняя





???????@Mail.ru Rambler's Top100
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»