powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Создание своего файла ресурсов? как запихнуть все файлы в один?
19 сообщений из 19, страница 1 из 1
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38450940
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. такая задача :

Хочу загружать в Image файлы (картинки). Они должны где-нибудь храниться в какой-нибудь папке, но я не хочу чтобы обычный пользователь получил к ним доступ (когда будет лазить по этим папкам), а только через мою программу.
Такая технология используется , например, в играх. Когда все файлы группируются в один и со своим непонятным форматом.
Как сделать что-нибудь похожее?
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38451373
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальше сам.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
protected static void Save(IList<Bitmap> images, string fileName){
		    try
		    {
			using (Stream stream = File.Open("data.bin", FileMode.Create))
			{
			    BinaryFormatter bin = new BinaryFormatter();
			    bin.Serialize(stream, images);
			}
		    }
		    catch (IOException)
		    {
		    }
}

protected static IList<Bitmap> Load(string fileName) {
			using (Stream stream = File.Open("data.bin", FileMode.Open))
			{
			    BinaryFormatter bin = new BinaryFormatter();

			    return (List<Bitmap>)bin.Deserialize(stream);
			   
			}
}


ЗЫ: WPF тут не причем.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38451406
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абсолют,
Спс, на днях потестю. просто прогу делаю на WPF, поэтому не знаю, вдруг там есть свои заморочки
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38451674
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать BinaryFormatter/Stream будет иметь смысл, если Stream, скажем, криптованный. Для обычного складывания ресурсов в одну сборку достаточно просто добавить файл в проект ресурсной сборки, и в свойствах указать Build Action = Resource. И к таким ресурсам можно будет напрямую обращаться из разметки в других сборках по uri этих ресурсов.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38468781
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абсолют,

небольшая проблема. облазил гугл. не нашёл свою ошибку и решение её. В общем получилось так:

IList<BitmapImage> images = new List<BitmapImage>();

images.Add(new BitmapImage(new Uri("00", UriKind.Relative)));
images.Add(new BitmapImage(new Uri("01", UriKind.Relative)));
images.Add(new BitmapImage(new Uri("02", UriKind.Relative)));

FileStream stream = new FileStream(@"D:\труляля\serialize.bin", FileMode.Create, FileAccess.Write);

BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(stream, images); // ошибка тут :(
stream.Close();
MessageBox.Show("Получилось");

При чём никакого сообщения об ошибке я не получаю. Процесс сериализации просто останавливается.
Вот и тут так же.

public void To_Bottom_Image()
{
images.Add(new BitmapImage(new Uri("00", UriKind.Relative)));
images.Add(new BitmapImage(new Uri("01", UriKind.Relative)));
images.Add(new BitmapImage(new Uri("02", UriKind.Relative)));

Save(images, @"D:\труляля\пандачко.bin");
}

protected static void Save(IList<BitmapImage> images, string fileName)
{
try
{
using (Stream stream = File.Open(fileName, FileMode.Append))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, images); // Та же самая ошибка
}
}
catch (IOException ex)
{
MessageBox.Show("Ошибка " + ex);// не показывается почему то всё равно
}
}
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38469571
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть я неправильно делаю ILIST изображений? Кто знает как можно по другому запихнуть в список несколько изображений?
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38469747
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok,

В играх довольно часто используются банальные ZIP-файлы с минимальным уровнем компрессии и нестандартным расширением самого файла.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470078
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

Понимаю, сам так делал (архивировал и менял название расширения), но меня такой вариант не устроит(
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470100
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarokНахлобуч,

Понимаю, сам так делал (архивировал и менял название расширения), но меня такой вариант не устроит(
Так чем всё же не устраивает 15073885 ? Формат там достаточно специфичный, просто архиватором вытащить не получится.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470270
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

У меня задача создать программу, которая бы распаковывалась с отдельными папками и файлами настроек. При чём в папке бы хранились несколько файлов(куда архивируются/кодируются больше 1 изображения). При обращении к определённому классу, он бы открывал нужный файл и вытаскивал оттуда все(Нужные для него) изображения.

Сейчас же я добавляю в класс существующий элемент и могу выбирать из элементов изображения. (я так понимаю я таким образом их и добавляю в файл ресурсов?)

"класс"-"добавить"-"существующий элемент..."

Но если так, то все файлы будут храниться в одном exe и он будет разрастаться до бесконечности?

Можете мне примерно показать как это работает, я буду благодарен.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470400
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarokНахлобуч,

Понимаю, сам так делал (архивировал и менял название расширения), но меня такой вариант не устроит(
Можно заморочиться со Structured Storage .
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470405
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok,

все же элементарно:



использование в коде основного приложения (на скрине - окошко с веселым роджером):
Код: xml
1.
2.
3.
4.
5.
6.
7.
<Grid>
  <Image
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    Stretch="None"
    Source="/ImageLib;component/res/jr.png"/>
</Grid>


Таких ImageLib можно наделать сколько угодно, ресурсов (картинок) в них может быть сколько угодно, ресурсы можно нужным образом структурировать по папкам-подпапкам. Всё это хозяйство, завернутое в соответствующие dll (которые могут вообще не содержать классов), будет лежать рядом с экзешником в папке программы.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470846
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

Спасибо, сегодня потестю
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38470850
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

что-то там жёстко))) пожалуй откажусь пока
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38471051
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

Делаю всё тоже самое, но не вижу, чтобы создавалось отдельных Dll файлов. При компиляции всё заносится в один exe файл.

Прилагаю изображение
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38471224
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarokДелаю всё тоже самое, но не вижу, чтобы создавалось отдельных Dll файлов. При компиляции всё заносится в один exe файл.
Нет, не то же самое. У меня в солюшене 2 проекта, один - собственно приложение (exe), второй - class library (dll) с рисунками. У вас в солюшене один проект - приложение. Смотрите внимательней.
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38471323
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

Сделал так. Добавить-создать проект- библиотека классов(Название "Resourse").
всё равно не видит картинку((((
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38471343
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarokСон Веры Павловны,

Сделал так. Добавить-создать проект- библиотека классов(Название "Resourse").
всё равно не видит картинку((((

Референс на библиотеку с картинками в основном приложении есть? Если да - приведите путь к рисунку к тому виду, какой указан у меня в коде выше (/assembly_name;component/folder1/.../folder_n/image.png).
...
Рейтинг: 0 / 0
Создание своего файла ресурсов? как запихнуть все файлы в один?
    #38471424
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,

Спасибо, добивил в референсы(раньше я вообще не знал, что это такое), заработало.
И вопрос напоследок. Хочу поменять картинку из другого класса(в этом же проекте).
Делаю так:

MainWindow m = new MainWindow();
m.ImageMain.Source = new BitmapImage(new Uri("/Resourse;component/Come/00.png", UriKind.Relative));

Создаю новое главное окно и пытаюсь поменять Source картинки в этом окне (в WinForms прокатывало вроде), здесь не получается.
Видимо, изображение меняется не в настоящем главном окне, а виртуально созданном.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Создание своего файла ресурсов? как запихнуть все файлы в один?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]