Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимация 
:(
    Опции темы
Kirgston
Дата 6.3.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем доброго времени суток! Ребята подскажите пожалуйста как можно анимировать картинку? Скажем когда я навожу на Имадж1 чтобы запускалась анимация, отвожу - выключалась.  smile 
PM MAIL   Вверх
Anikmar
Дата 6.3.2009, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Я бы сделал так:
Разместил бы на форме панель, на нее - TAnimate.

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

Но это дело техники, на самом деле.

Добавлено через 34 секунды
Цитата(Anikmar @  6.3.2009,  23:28 Найти цитируемый пост)
Попала мышь на панель

Читаю эту фразу и смеюсь - во как жизнь несчастную мышь допекла  smile 
PM MAIL ICQ   Вверх
Kirgston
Дата 6.3.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если по вашему принципу то ничего сложного ;) просто вы забыли о OnMouseEnter OnMouseLive . Вот и на этом можно построить... но дело в том что я хочу Gif =) . А Анимейт поддерживает только видео.
Помню на делфи я делал так:
Код

g:TGifImage;
g.LoadFormFile(...);
g.Animate:=true;
Image1.Picture:=g;
g.Free;


Вроде так... но дело в том что тут понадобится файл из вне =) а я хочу чтобы программа обошлась без всего этого =)
PM MAIL   Вверх
Anikmar
Дата 6.3.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Я не знаю, поддерживает ли 2009 Gif. Шестерка точно не поддерживала. Если есть компоненты для работы с Gif - то можно. Но меня терзают смутные сомнения, что Gif так и остался платным форматом (что-то такое слышал) и открывать лицензию не хотят. Из этого вытекают соответствующие проблемы.

Перегнать Gif в AVI я вроде где-то видел какие-то конверторы.

В общем не суть - если у вас получится на AVI - следующим ходом ищите Gif-компонент. 

Хотя, если честно, не получиться просто не может - реально 4 строки введенного вручную кода (не считая имен файлов проекта и компонентов).
PM MAIL ICQ   Вверх
THandle
Дата 7.3.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Kirgston, TImage поддерживает GIF. 

http://forum.vingrad.ru/forum/topic-215056...y1706992/0.html
PM   Вверх
Kirgston
Дата 7.3.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Аааааа ребята =) я знаю =) Начиная с 2007 РАДа включена поддержка анимации и гифов (в РАД 2009 даже пнг есть) . Я просто не знаю как запустить анимацию :( подскажите пожалуйста...
PM MAIL   Вверх
Anikmar
Дата 7.3.2009, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(THandle @  7.3.2009,  01:00 Найти цитируемый пост)
Kirgston, TImage поддерживает GIF. 

Поделитесь, как?
Компонент RxLib не в счет. Именно TImage?

У меня ничего не получилось. Грузит успешно только первый кадр, анимацию не поддерживает.

Единственный метод, с помощью которого я заставил TImage работать с gif выглядел примерно так:

По нажатию кнопки запуска загружаю gif:
Код

void __fastcall TF_Main::Button2Click(TObject *Sender)
{
    pGif->LoadFromFile("g1.gif");
    CountGif = pGif->Images->Count;
    GifIndex = 0;
    Timer1->Enabled = true;
}

Считываю количество кадров, запускаю таймер.

В обработчике таймера рисую кадр:
Код

void __fastcall TF_Main::Timer1Timer(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(pGif->Images->Frames[GifIndex]);
    GifIndex++;
    if (GifIndex >= CountGif) GifIndex = 0;


Метод идиотский, как и идиотский (в своем духе) хелп у борланда. Если TImage в Design-mode позволяет загрузить gif и честно пишет, что объект TGIFImage загружен, ну почему по нему нет ни строчки хелпа?! Сам класс определяется с ним можно работать - но изучай по прототипу и все тут. 

Уроды, одним словом.

Тем не менее мой метод вижу дурацким. Слишком сильно мерцание.
Резюме:
TImage не рисует gif (нормально), и тем более не анимирует. ИМХО. Либо моего терпения на шастанье в потемках билдер-"хелпа" не хватило.

RxLib наверное будет работать, но я ее не ставил и не проверял.

 smile 
Эх, соединить бы среду билдера с хелпом студии - цены не было бы продукту. (ИМХО)


PM MAIL ICQ   Вверх
SVN74
Дата 7.3.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Вот готовый (рабочий) примерчик для  C++Builder 2009
=========================================
Код

#include <vcl.h>
#pragma hdrstop

#include "GIF_PROBA.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;

//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
   T= new TGIFImage();
   T->LoadFromFile(L"048.gif");
   ImageCount = T->Images->Count;
   Index = 0;
   rect=Image->Canvas->ClipRect;

   DC= GetDC(Handle);
   DC1 = GetDC(Memo1->Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Timer1Timer(TObject *Sender)
{
  if(Index>ImageCount-1)Index=0;


     TextOut(DC,10,30,"IYUOYUYUIYUIYUIY",16);
     T->Images->Frames[Index]->Draw(Image->Canvas,rect,0,0);
     Image->Refresh();

     BitBlt(DC1,10,10,170,140,
     T->Images->Frames[Index]->Bitmap->Canvas->Handle,
     0,0,SRCCOPY);

   Index++;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::FormDestroy(TObject *Sender)
{
   delete T;
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#ifndef GIF_PROBAH
#define GIF_PROBAH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
#include <ImgList.hpp>
#include <Menus.hpp>
#include <GIFImg.hpp>
#include <Dialogs.hpp>
#include <ExtDlgs.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:    // IDE-managed Components
    TImage *Image;
    TTimer *Timer1;
    TMemo *Memo1;
    void __fastcall Timer1Timer(TObject *Sender);
    void __fastcall FormDestroy(TObject *Sender);
private:    // User declarations
        TGIFImage *T;
        int ImageCount,Index;
        TRect rect;
        HDC DC1,DC;
public:        // User declarations
    __fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif


PM MAIL WWW   Вверх
Anikmar
Дата 7.3.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(SVN74 @  7.3.2009,  12:20 Найти цитируемый пост)
     T->Images->Frames[Index]->Draw(Image->Canvas,rect,0,0);
     Image->Refresh();
     BitBlt(DC1,10,10,170,140,
     T->Images->Frames[Index]->Bitmap->Canvas->Handle,
     0,0,SRCCOPY);


А зачем 2 раза выводить?


PM MAIL ICQ   Вверх
SVN74
Дата 7.3.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Цитата(Anikmar @  7.3.2009,  12:58 Найти цитируемый пост)
А зачем 2 раза выводить?


Демонстрация двух разных способов вывода: 
  Один выводит на Image...
  Другой на Memo1... (полезная вещь для смайлов)
То бишь можно вообще не использовать Image...
  

Это сообщение отредактировал(а) SVN74 - 7.3.2009, 13:11
PM MAIL WWW   Вверх
Kirgston
Дата 7.3.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Аааааааа РЕБЯТА! Я же говорю всё намного проще! =) Кто то хоть смотрел на код что я привел? В Делфи? Просто синтаксис себе поменяйте.
Код


TGIFImage *g=new TGIFImage();
g->LoadFromFile("1.gif");
g->Animate=true;
g->AnimationSpeed=...;//какую скорость ставить можно я не знаю . Увы =) 
Image1->Picture->Assign(g);
g->Free();


=) всё намного проще =)

Ребята только мне не надо лод фром файл. Мне надо чтобы он грузился с ехе... аля с ресурсов... помогите пожалуйста smile 
PM MAIL   Вверх
Kirgston
Дата 8.3.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята. Подскажите пожалуйста ))) как же мне всё это грузить из ресурсов? =) Заранее очень благодарен!
PM MAIL   Вверх
THandle
Дата 8.3.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 25
Всего: 372



Kirgston, что все? Картинки? Так ведь тем полно...

Вот например:

http://forum.vingrad.ru/forum/topic-243185/unread-1.html
PM   Вверх
Dmi3ev
Дата 8.3.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

Так ведь тем полно...

http://forum.vingrad.ru/forum/topic-249463.html



--------------------

PM MAIL   Вверх
Kirgston
Дата 9.3.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ой тьфу... закрутился со всем этим и ... вообщем извините  smile 
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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