Вопрос № 25202: Здраствуйте уважаемые эксперты!
Вопрос такой. Как можно в ходе в ходе выполнения пргограммы менять курсор, а именно создавать свой курсор (к примеру в виде прямоугольника) в памяти, с нужными параметрами (высота, ширина) а потом подставлять его в...Вопрос № 25208: Здравствуйте, уважаемые эксперты!
Как в Дельфи сделать анимацию наподобие TAnimate но не использовать видео-файлы (т. е. типа GIF)....
Вопрос № 25.202
Здраствуйте уважаемые эксперты!
Вопрос такой. Как можно в ходе в ходе выполнения пргограммы менять курсор, а именно создавать свой курсор (к примеру в виде прямоугольника) в памяти, с нужными параметрами (высота, ширина) а потом подставлять его вместо текущего на оъекте
Отправлен: 23.08.2005, 10:35
Вопрос задал: Danik (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Delphin
Здравствуйте, Danik!
Рисовать его на канве а потом подставить в Screen.Cursor.
примерно так
//...........
var
C: TCursor;
begin
c:= TCursor.Create;
c.Canvas. // Твои действия по рисованию.
c.Free;
// Прости если что-то не так. Под рукой небыло дельфи.
--------- Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 8-ой класс)
Отправлен: 23.08.2005, 11:20
Отвечает: sir henry
Здравствуйте, Danik!
Будет куда лучше, если Вы загрузите саои курсоры в RES файл. Потом просто прилинкуете его к программе и будете загружать свои курсоры не отходя от кассы:
LoadCursor(Instance: THandle; CursorName: PChar): HCursor;
где Handle - это хэндл Вашей программы, CursorName - имя курсора.
Дельфийский редактор изображений позволяет создавать курсоры.
К сожалению, напрямую присвоить курсор не получится, поэтому нужно написать пару лишних строк кода. :)
У объекта screen есть свойство Cursors - массив курсоров. Предопределенные курсоры хранятся в массиве с индексом от -1 и ниже, значит Вы можете загнать свои курсоры в элементы с индексом от 1 и выше:
screen.Cursors[1]:=LoadCursor(Handle, 'MY_CURSOR_PTICHKA');
screen.Cursors[1]:=LoadCursor(Handle, 'MY_CURSOR_LAYGUSHKA');
screen.Cursors[1]:=LoadCursor(Handle, 'MY_CURSOR_KVADRAT');
Далее индекс элемента массива присваивается курсору формы:
Form1.Cursor:=1;
Точно так-же можно присвоить курсор любому объекту:
Edit1.Cursor:=3;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 23.08.2005, 12:08
Отвечает: Ерёмин Андрей
Здравствуйте, Danik!
Воспользуйтесь API-функцией CreateCursor(). После этого вы получите идентификатор этого курсора, по которому и следует изменять курсор для объекта. Однако этот способ - трудный. Гораздо проще заранее нарисовать курсоры и затем зарегистрировать их в системе, а после - использовать:
var h: THandle;
begin
h := LoadImage(0, 'c:Cursor.cur', IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);
if h = 0 then
ShowMessage('Ошибка при загрузке курсора.')
else
begin
Screen.Cursors[1] := h;
Button1.Cursor := 1;
end;
end;
Этот простой пример загружает курсор из файла C:Cursor.cur и устанавливает его для Button1.
Рисовать курсоры можно во многих редакторах. Лично я предпочитаю AWIcons Pro. Но можно использовать и Resource Workshop, идущий в комплекте Delphi. Удачи!
--------- Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 23.08.2005, 13:17
Отвечает: John Freeman
Здравствуйте, Danik! Курсор в памяти - это к описанию формата .cur - в интернет, удобнее брать готовый из ресурсов, что и делает большинство программ. Как сделать чтобы был он - setcursor (смотри WINAPI SDK Refence из комплекта Delphi для полного описания) Но проще как обычно : LoadCursor->SetCursor P.S. Не забывай возвращать курсор обратно, иначе это будет дурной тон.
--------- Ik bin ulien spiegel!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 23.08.2005, 14:15
Вопрос № 25.208
Здравствуйте, уважаемые эксперты!
Как в Дельфи сделать анимацию наподобие TAnimate но не использовать видео-файлы (т. е. типа GIF).
Отправлен: 23.08.2005, 14:22
Вопрос задал: Karusell (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ramon105
Здравствуйте, Karusell!
Не совсем понял сути вопроса (можем обсудить в аське).
Но могу предложить следующие варианты:
1. Использовать flash анимацию (реализуется через activex, подробности в лички или в аське)
2. по timer перемещение объектов (в т.ч. картинок) (самое простое решение)
--------- иЗвиНиТЕ зА НеРоВНый ПочЕРк! (c) Boxa
Ответ отправил: Ramon105 (статус: 5-ый класс)
Отправлен: 23.08.2005, 14:32
Отвечает: Ерёмин Андрей
Здравствуйте, Karusell!
Нужно использовать специальные компоненты, которые выводят анимированные GIF-изображения. Лично я предпочитаю JvGIFAnimator из пакета JediVCL (http://sourceforge.net/jvcl/; http://www.jedivcl.org). Удачи!
--------- Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 23.08.2005, 15:01 Оценка за ответ: 3 Комментарий оценки: На sourceforge уже нет такой директории, а jedivcl.org тоже не нашел.
Отвечает: John Freeman
Здравствуйте, Karusell!
Скачать на torry.net компонент Animated GIF и всё, а стандaртные не поддерживают анимированный GIF просто.
--------- Ik bin ulien spiegel!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 23.08.2005, 15:32 Оценка за ответ: 5 Комментарий оценки: Спасибо большое проблема разрешена
Отвечает: Силантьев Евгений Александрович
Здравствуйте, Karusell!
Зайди на torry.net там наверняка есть нужный тебе компонент. Второй вариант бросить на форму таймер и имэйдж и в обработке сообщения таймера меняй изображение.
Успехов! Надеюсь помог!
--------- The world is mine! :)
Отвечает: Delphin
Здравствуйте, Karusell!
1. Покадрово рисовать фреймы из Gif'a.
2. Использовать компоненты типа RxGifAnimate. ( Воде так он называется. Забыл. Но там точно есть слова Rx и Gif. )
3. Чем вас не устраивает Avi? Они не так много занимают.
4. Если это стандартные анимации то извлекать их из библиотек где они хранятся и прогирывать.
--------- Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 8-ой класс)
Отправлен: 24.08.2005, 10:01
Отвечает: Ballon
Здравствуйте, Karusell!
Я на как то torry.net видел компонент который проигрывает gifы
Ответ отправил: Ballon (статус: 4-ый класс)
Отправлен: 26.08.2005, 07:36