Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы WMF и ресурсы, Загрузка WMF из ресурсов 
V
    Опции темы
C4EBA
Дата 12.9.2011, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Добрый день!
Необходимо сохранить в ресурсах программы несколько векторных графических файлов WMF для того, чтобы во время работы программно загружать их в Image.
Изучив на сайте материалы о ресурсах, я освоил работу с ресурсами, в которых содержались ВМР-файлы: создавал файл ресурсов и изображения из него загружал в Image. Учитывая, что и WMF, и ВМР можно на стадии разработки приложения загрузить в Image, я взял за основу работу с ресурсами для файлов BMP. 
Вначале я создал файл WMFRES.rc:
ResTroinik Metafile F:\XE_Projects\Troinik.wmf  
Этот файл и файл Troinik.wmf положил в папку проекта, в проекте в меню Projec\Add to Projec.. выбрал WMFRES.rc. Сохранил и откомпилировал проект. В папке проекта появился файл ресурсов WMFRES.res.
Добавил созданный ресурс в проект: {$R WMFRES.res}
Попытался использовать файл из ресурса в проекте: загрузить его в Image при нажатии кнопки.
По аналогии с кодом для ВМР-файла 

Код

Image1.Picture.Bitmap.LoadFromResourceName(HInstance,'ResTroinik');


 начал записывать:

Код

 procedure TForm1.ButAboutClick(Sender: TObject);
  begin
   Image1.Picture.Metafile.


но для Metafile в выпадающем меню не нашел LoadFromResourceName, поэтому не смог загрузить файл.
Вопросы:
- правильно ли я сделал запись в WMFRES.rc для создания файла ресурсов?
- как загрузить из файла ресурсов файлы WMF?

Это сообщение отредактировал(а) C4EBA - 12.9.2011, 21:34
PM   Вверх
bems
Дата 13.9.2011, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



вроде нет типа ресурса Metafile, используй RCDATA

Код

uses
  Graphics, Classes;
var
  Stream: TStream;
begin
  Stream := TResourceStream.Create(hInstance, 'ResTroinik', RT_RCDATA);
  try
    Image1.Picture.Metafile.LoadFromStream(Stream);
  finally
    Stream.Free
  end;





--------------------
Обижено школьников: 8
PM MAIL   Вверх
C4EBA
Дата 13.9.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Спасибо за подсказку. Попробую и отпишусь.
PM   Вверх
C4EBA
Дата 13.9.2011, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Все получилось, привожу решение.
Создал файл WMFRES.rc:

ResTroinik RCDATA F:\Delphi_XE_Projects\Troinik.wmf
ResDetA RCDATA F:\Delphi_XE_Projects\DetA.wmf
ResDetB RCDATA F:\Delphi_XE_Projects\DetB.wmf
ResDetC RCDATA F:\Delphi_XE_Projects\DetC.wm

Этот файл и файлы Troinik.wmf, DetA.wmf, DetB.wmf, DetC.wmf положил в папку проекта F:\Delphi_XE_Projects, в проекте в меню открыл Projec\Add to Projec.. выбрал WMFRES.rc. Сохранил и откомпилировал проект. В папке проекта появился файл ресурсов WMFRES.res.
Добавил созданный ресурс в проект: 

Код

implementation

{$R *.dfm}
{$R WMFres.res}


Закрыл окно WMFRES.rc. Удалил из окна Project Manager файл WMFRES.rc. Удалил из папки проекта файл WMFRES.rc и файлы Troinik.wmf, DetA.wmf, DetB.wmf, DetC.wmf.
Добавил в обработчик Button1Click:

Код

procedure TForm1.Button1Click(Sender: TObject);
 var
   Stream: TStream;
begin
  Stream := TResourceStream.Create(hInstance, 'ResDetA', RT_RCDATA);
  try
    Image1.Picture.Metafile.LoadFromStream(Stream);
  finally
    Stream.Free
  end;
end;


(вместо ResDetA можно указать ResDetВ, ResDetС или ResTroinik).

Среда разработки - Дельфи ХЕ
PM   Вверх
bems
Дата 13.9.2011, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(C4EBA @  13.9.2011,  22:01 Найти цитируемый пост)
Удалил из окна Project Manager файл WMFRES.rc. Удалил из папки проекта файл WMFRES.rc и файлы Troinik.wmf, DetA.wmf, DetB.wmf, DetC.wmf.
а это зачем? обычно делают для ресурсов отдельную поддиректорию



--------------------
Обижено школьников: 8
PM MAIL   Вверх
C4EBA
Дата 14.9.2011, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 13.4.2009

Репутация: нет
Всего: 1



Цитата(bems @  13.9.2011,  22:32 Найти цитируемый пост)
обычно делают для ресурсов отдельную поддиректорию

Согласен. И к этой поддиректории указывают путь в rc-файле. То есть в моем примере создания rc-файла вместо

... ... ... F:\Delphi_XE_Projects\Troinik.wmf 

указывается путь к поддиректории, например

... ... ... F:\Delphi_XE_Projects\Resurs\Troinik.wmf 

И файлы WMFRES.rc, Troinik.wmf, DetA.wmf, DetB.wmf, DetC.wmf должны быть в поддиректории F:\Delphi_XE_Projects\Resurs\. 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.