Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 00:26   #31
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Цитата:
а Open Graphic Library по вашему к графике не относится?
относИтся отнОсится, но смогу ли с помощью него научиться рисовать??? Атак делать как бы анимацию, т.е. мне нужно научиться программировать графику в delphi типа, но я изучил уже компонент Canvas. Но как его теперь использовать для написания более сложных программ??? Есть ответ?
Как мне уже сказали, надо научиться работать с графикой, т.е. понять работу с PaintBox, Image для рисования. Оба компонента уже знаю как использовать. Но что-то ума мне, чтобы написать более сложную программу после прочтения некоторых статей и проработки некоторых практических заданий - не прибавило.
Всё гениальное - просто!

Последний раз редактировалось .Phoenix; 05.04.2010 в 00:30.
.Phoenix вне форума Ответить с цитированием
Старый 05.04.2010, 00:34   #32
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

на нем(как и на GDI) вы сможете нарисовать чтото, но вам главное понять принципы рисования, то алгоритм, где что расставлять
обычно у нас идет фон, на него рисуются обьекты(столбцы визуализации например)
определенный цвет и тд.(градиент и прочее)

канвас, ты изучил, но что ты можешь с его помощью нарисовать?
график например смогешь?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.04.2010, 00:41   #33
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Есть способные помочь???
Способные то есть, вот только у них времени нет )

Цитата:
как мне на PaintBox'е научиться нормально рисовать
VCL оболочка для графики Windows предоставляет только самые основные средства рисования, чтобы расширить их нужно применять функции из WinAPI.

Я примерно понимаю о чем ты, чтобы было красивее, во первых используй градиент, во вторых - альфабленд. Можно реализовать самому, но есть и готовые функции в API для этого (в VCL нет). Все это вместе в комбинации позволит нарисовать весьма красивые интерфейсы. К примеру я бы градиент заюзал в анализаторе, и поделил бы потом на секции по горизонтали каждый столбик, было бы красиво, как в AIMP например.

Что касается применения BitBlt, то в VCL программе без нужды особого смысла применять ее нет, Canvas.Draw рисует с такой же скоростью.

Цитата:
а Open Graphic Library по вашему к графике не относится?
В принципе, для небольших по размеру динамичных картинок (типа спектроанализатора в плеере), можно делать и на GDI графике, процессор успеет. А вот полноэкранная графика, тут уже конечно нужно аппаратное ускорение юзать.

p.s. По поводу как сделать все таки этот анализатор, как бы я это сделал:
1. Придумать класс (абстрактный для начала), предусмотреть нужные поля и методы. Написать его на Delphi.
2. Найти в bass таймер к к-рому привязаться.
3. Цепляем к этому таймеру наш объект, т.е. заполняем поля его - каждый столбик (Bar по-английски). Весь код вывода графики будет внутри класса анализатора, так мы не будем мусорить и код будет аккуратный и понятный.

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

p.s. По дурацки звучит как-то - столбик, как его лучше называть?

p.p.s. Я знаю что тебе нужно, уроки по созданию простых игр на канве, у нас на форуме есть они, это как раз то что тебе нужно для понимания как создавать анимацию программно. Только смотри чтобы именно на канве, если с помощью TShape или там кнопочки по форме ездиют, то тебе это не нужно, проходи мимо.

Вот еще у себя нашел исходники окна о программе к моему плееру на базе TMediaPlayer, сам плеер с исходниками можешь найти в ветке Обсуждение программ, а вот это окошко о программе я кажется тогда так и не включил туда, во вложении pas и dfm файлы этой формы, там кружочки по всей форме появляются и исчезают, если по форме кликать то в месте клика тоже кружочек растет, попытайся понять как работает.
Вложения
Тип файла: zip circles.zip (2.0 Кб, 25 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 05.04.2010 в 01:16.
mutabor вне форума Ответить с цитированием
Старый 05.04.2010, 13:12   #34
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

.Phoenix если тебя еще интересуют анализаторы, то можешь использовать мою библиотеку (пример прилагается)
тыц
ZuBy вне форума Ответить с цитированием
Старый 05.04.2010, 14:36   #35
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Пепел Феникса
Цитата:
канвас, ты изучил, но что ты можешь с его помощью нарисовать?
Я могу воспользоваться всеми зарезервируемыми свойствами, что есть у свойства Canvas объекта РaintBox. Что-то, но можно нарисосвать.
Цитата:
график например смогешь?
График написать не проблема, но как это сейчас относится к моему делу? Он мне может помочь???
mutabor
Прочёл твоё смс, кое-что не знал - буду знать.
Как можно BitMap привязать к PaintBox'у? Здесь надо как-нибудь по подробнее. Я могу понять и понимаю, но не все сразу. Так как в графике пока, что новичок. И можно как-нибдуь по подробнее с Bitmap'ом? Что это, да кто это?
Цитата:
p.s. По дурацки звучит как-то - столбик, как его лучше называть?
Ну не знаю, мне кажется лучше так и оставить.
Цитата:
p.p.s. Я знаю что тебе нужно, уроки по созданию простых игр на канве, у нас на форуме есть они, это как раз то что тебе нужно для понимания как создавать анимацию программно
Нет, игры я создавать пока не хочу, меня это щас не особо заботит. больше интересует графика, за ней очередь анимация.
Цитата:
Только смотри чтобы именно на канве, если с помощью TShape или там кнопочки по форме ездиют, то тебе это не нужно, проходи мимо.
Не надо из меня делать полного ....... пжлст PaintBox и Shape я хорошо различаю
Ну за исходники спасибо, но мне бы хотелось прочесть какую-нибудь одну, но хорошую книгу по графике, прочитав которую я смогу не слабо рисовать.
ZuBy
Цитата:
если тебя еще интересуют анализаторы, то можешь использовать мою библиотеку (пример прилагается)
Да меня ещё интересуют анализаторы, но боюсь пока нормально не научусь работать/программировать графикой в Delphi, он мне не светит.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 05.04.2010, 14:56   #36
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Как можно BitMap привязать к PaintBox'у? Здесь надо как-нибудь по подробнее. Я могу понять и понимаю, но не все сразу. Так как в графике пока, что новичок. И можно как-нибдуь по подробнее с Bitmap'ом? Что это, да кто это?
ну банальный пример, хотя лучше этот код вставить в OnPaint (PaintBox1)
Код:
var
  bmp: TBitmap;
begin
  bmp := Tbitmap.create;
  bmp.width := 20;
  bmp.height := 20;
  bmp.canvas.fillrect(bmp.canvas.cliprect);
  BitBlt(paintbox1.Canvas.Handle, 0, 0, paintbox1.width, paintbox1.height, bmp.canvas.Handle, 0, 0, SRCCOPY);
 //paintbox1.canvas.draw(0, 0, bmp);
  bmp.free;
end;
Цитата:
Да меня ещё интересуют анализаторы, но боюсь пока нормально не научусь работать/программировать графикой в Delphi, он мне не светит.
а ты смотрел пример)
я там все уже сделал, тебе осталось только ~10 строк скопировать в свои плеер и все)
ZuBy вне форума Ответить с цитированием
Старый 05.04.2010, 15:12   #37
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Цитата:
bmp.canvas.fillrect(bmp.canvas.clip rect);
BitBlt(paintbox1.Canvas.Handle, 0, 0, paintbox1.width, paintbox1.height, bmp.canvas.Handle, 0, 0, SRCCOPY);
Снова не понял...
Цитата:
а ты смотрел пример)
я там все уже сделал, тебе осталось только ~10 строк скопировать в свои плеер и все)
Скопировать могу в любой момент, мне надо понять. И чтоб я сам мог "закрытыми глазами" писать такое.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 05.04.2010, 15:28   #38
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

bmp.canvas.fillrect(bmp.canvas.clip rect); // заполняем bmp белым цветом

можно менять цвет
Код:
bmp.canvas.brush.color := clred; // заливка
bmp.canvas.pen.color := clyellow; // граница
bmp.canvas.fillrect(bmp.canvas.clip rect); // заполняем bmp выбранными цветами
А это мы копируем из одного дескриптора в другой по средствам WinAPI
Код:
BitBlt(paintbox1.Canvas.Handle, 0, 0, paintbox1.width, paintbox1.height, bmp.canvas.Handle, 0, 0, SRCCOPY);
аналогично в Canvas
Код:
paintbox1.canvas.draw(0,0,bmp);
ZuBy вне форума Ответить с цитированием
Старый 05.04.2010, 15:47   #39
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Чтобы научиться рисовать... нужно рисовать, банально, но это так. Исходя из имеющихся инструментов. И анализировать чужие исходники, брать из них новые для себя идеи, нюансы.

Насчет игр ты зря, там все то, что тебе нужно используется. Я ж не говорю крутейшую 3D игру учиться делать, а простые двухмерные на канве, там вся та же техника используется как и для рисования интерфейсов. Просто уроков по созданию интерфейсов не так много, а вот игр - есть.

В общем случае тебе надо из квадратиков кружочков и линий составлять сложные красивые рисунки, вся GDI графика сводиться к этому. Для примера погугли на тему EMF файлов, и посмотри какие сложные рисунки можно создать командами GDI.

Простейшая анимация:
1. рисуешь фон (реализация - не суть важно, я делаю на основе TBitmap)
2. поверх фона рисуешь объект в его текущем положении (тоже самое, сплошная абстракция, я не зря применил слово объект, хочешь из еще одного битмапа выводи, хочешь рисуй программно каждый раз)
3. goto 1

Цитата:
Снова не понял...
Ты спрашивал, как связать Bitmap с PaintBox. Ответ - нарисовать его на канве PaintBox
Код:
paintbox1.canvas.draw(0, 0, bmp);
Про TBitmap читай в мануалах Дельфи, или в интернете. Это одно из основных понятий, к-рое тебе нужно освоить.

p.s. И еще один конкретный совет, сделай скрин из какого нибудь плеера с анализатором, к-рый тебе нравиться и наподобии к-рого ты хотел бы свой создать. И попытайся нарисовать его копию программно, один в один, без никакой анимации сначала, просто статическую картинку, но чтобы она не отличалась от скрина. По ходу и научишься, а потом уже анимацией займешься. Будут конкретные вопросы, как что нарисовать - задавай.

Вот к примеру один из этих можно попробовать (это из разных версий AIMP)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 05.04.2010 в 16:14.
mutabor вне форума Ответить с цитированием
Старый 07.04.2010, 13:10   #40
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

ZuBy
Код:
bmp.canvas.brush.color := clred; // заливка
bmp.canvas.pen.color := clyellow; // граница
Из всего кода, поняол только это...
mutabor
Цитата:
И анализировать чужие исходники, брать из них новые для себя идеи, нюансы.
Я смотрю и анализирую, но в коде, где уже пишется анализатор там уже ничего не понимаю - абсолютно.
Цитата:
Насчет игр ты зря, там все то, что тебе нужно используется. Я ж не говорю крутейшую 3D игру учиться делать, а простые двухмерные на канве, там вся та же техника используется как и для рисования интерфейсов. Просто уроков по созданию интерфейсов не так много, а вот игр - есть.
Хм...ясно.
Цитата:
p.s. И еще один конкретный совет, сделай скрин из какого нибудь плеера с анализатором, к-рый тебе нравиться и наподобии к-рого ты хотел бы свой создать. И попытайся нарисовать его копию программно, один в один, без никакой анимации сначала, просто статическую картинку, но чтобы она не отличалась от скрина.
Нарисовать можно, но со сплошеыми прямыми, да с прямоугольниками.
Вот был бы хотя бы один какой-нибудь нормальный учебник, по которому можно научиться просто рисовать.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто знает что это за компонент edik Компоненты Delphi 2 05.12.2009 23:06
Подскажите если кто знает что это за компоненты edik Компоненты Delphi 7 02.12.2009 20:24
Может кто нибудь знает, что это такое? vinokur Помощь студентам 5 27.10.2009 19:18
Что это такое и как это того... Alex Cones Общие вопросы Delphi 2 11.10.2009 12:04