C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
gif-файл и C++ Builder
laifik
  Отправлено: 09.10.2003, 14:47


Дежурный стрелочник

Группа: Участник
Сообщений: 70



Возможно ли вставить рисунок gif в компонент Image? Хотя он не поддерживает такого расширения. А чем можно и можно ли? ohmy.gif
Admin
Отправлено: 10.10.2003, 09:40


Владимир

Группа: Администратор
Сообщений: 1190



Можно, вставляйте.
Расширение поддерживает.

С сайта:
http://bcbdev.ru/codesamples/vcl/standardg...gincbuilder.htm

CODE

Для того, чтобы использовать стандартные компоненты для работы с файлами gif и jpeg в C++Builder, необходимо зарегистрировать данные типы файлов. Для регистрации напишите следующий код.

Для jpeg.

TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage));
delete Picture;

Для gif.

TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TGIFImage), "gif", "gif", __classid(TGIFImage));
delete Picture;
** laifik
  Отправлено: 13.10.2003, 11:05


Не зарегистрирован







К сожалению, мало что поняла из Вашей подсказки. Так серьезно с форматами не работала, поэтому не знаю, где происходит регистрация такого рода файлов. Если можно какой-нибудь простенький примерчик.
В свою очередь, gif-файл я загрузила с помощью CppWebBrowser, но у этого компонента невозможно отключить вертикальную полосу прокрутки. А это мне не к чему. ohmy.gif
Borgir
Отправлено: 13.10.2003, 11:40


Дежурный стрелочник

Группа: Участник
Сообщений: 48



Странно. У меня TImage все поддерживает без всяких регистраций...
Admin
Отправлено: 13.10.2003, 12:01


Владимир

Группа: Администратор
Сообщений: 1190



Пишем код:
CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("c:\\MyPicture.gif");
}


Получаем ошибку во время работы приложения:
Unknown picture file extension

Пользуемся подсказкой, пишем код:
CODE

#include <RxGIF.hpp> // включаем описание TGIFImage из библиотеки RXLib

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// регистрируем .gif
TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TGIFImage), "gif", "gif",__classid(TGIFImage));
delete Picture;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("c:\\MyPicture.gif");
}
//-------------------------------------------



Теперь все работает нормально.

---

QUOTE
В свою очередь, gif-файл я загрузила с помощью CppWebBrowser


Ну это круто. Поздравляю. smile.gif
Я также всегда стараюсь — не мытьем так катаньем, главное чтобы
работало. Правильный принцип.
Нормальные герои всегда идут в обход.


Отредактировано Admin — 13/10/2003, 13:56
** laifik
  Отправлено: 13.10.2003, 13:37


Не зарегистрирован







Думала, сейчас все получится. Но, оказывается, библиотека тащит ряд других, которые я уже скачала. А вот зависла на VCLUtils.hpp, которая находится в патчах. Патч на 6 Builder почему-то не раскрывается. Сейчас качаю другой. Но уже нет уверенности, что и этот сработает. Если можете, скинте, пожалуйста, на адрес:
laifik@mail333.com файл VCLUtils.hpp. Заранее благодарю. sad.gif
Admin
Отправлено: 13.10.2003, 15:49


Владимир

Группа: Администратор
Сообщений: 1190



Отправил, но возможно понадобиться не только этот файл
но и установка компонентов RXLib, что и советую сделать.
Также скинул все vclutils.* в http://cbuilder.ru/Upload

Отредактировано Admin — 13/10/2003, 16:58
** laifik
  Отправлено: 14.10.2003, 09:34


Не зарегистрирован







Чувствую, залезла в дебри. Вопросов рождается все больше и больше. Уж если сможете, Владимир, помогите дойти до конца.
Во-первых, как устанавливаются компоненты RXLib. Уже давно хочу это сделать, но нигде не описано.
Во-вторых, добавляя #include в список она начинает "соперничать" с какой-то другой утилитой и выдает ошибку;
Ambiguite 'Dialogs' and 'Word-2k::Dialogs', после чего указывает на строку утилиты Vclutils:
extern PACKAGE Word __fastcall MsgDlg(const AnsiString Msg, Dialogs::TMsgDlgType AType, Dialogs::TMsgDlgButtons AButtons, int HelpCtx);
Вот тут я ничего не понимаю. Пробовала отключить все утилиты, они самообразовывались, но ошибка остается. На этой форме компонентов Word нет, есть на другой. Как найти ту утилиту, которая дублирует Vclutils.hpp? sad.gif
** laifik
  Отправлено: 14.10.2003, 10:10


Не зарегистрирован







За это время все-таки попыталась установить компоненты RXLib под 6 Билдер. Но они встали как-то криво. Не совсем понимаю фразу:

3 Пропишите в C++Builder6 путь к разархивированной папке ..\RX\units
(те если вы разархивировали в C:\Program Files\Borland\CBuilder6\RX,
этот путь будет C:\Program Files\Borland\CBuilder6\RX\units)

В каком месте программы это делается?

Вторая проблема осталась без изменения. Файл не могу скомпелировать. sad.gif
Admin
Отправлено: 14.10.2003, 13:59


Владимир

Группа: Администратор
Сообщений: 1190



QUOTE

В каком месте программы это делается?


Это делается не в программе а в среде C++Builder:

Tools->EnvironmentOptions->Library->LibraryPath
Project->Options->Directories/Conditionals->Include Path
Project->Options->Directories/Conditionals->Library Path

Вопросы по установке RXLib -
на Admin через PM или на support@rxlib.ru
laifik
  Отправлено: 14.10.2003, 14:44


Дежурный стрелочник

Группа: Участник
Сообщений: 70



Владимир, спасибо огромное! Я уже ранее догадалась и установила компоненты, а затем попробовала через RxGIFAnimator. Так оказалось даже проще. Строку, на которую ссылалась утилита, я отключила, и все заработало. Я это делала и раньше, но, видимо, из-за отсутствия библиотек это не срабатывало.
Думаю, наш диалог поможет многим. Паралельно со мною, на других форумах люди этим вопросом тоже интересуются. biggrin.gif

Вернуться в Вопросы программирования в C++Builder