![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как спрайты из TDXImageList скопировать в TBitMap [Delphi, Windows]
laa © (2004-03-25 16:33:00)Нужна помощь с DelphiX. Вся графика у меня строится таким образом:
Создаю буфер (TBitMap), на него бросаю спрайты и текст, затем буфер вывожу на DXDraw1.Surface.Canvas.
У меня есть следующие вопросы:
1. как спрайты из TDXImageList вывести в мой буфер (TBitMap).
2, какие есть оптимальные схемы вывода графики?
Заранее благодарен!
laa (2004-04-01 11:19:00) [1]Да, у меня 6-я версия.
А в 7-й все нормально работает?
lyeh (2004-04-01 01:15:00) [2]2 Omar2002 ©
А ты какую Delphi юзаешь? В 6-й именно такая ошибка
Omar2002 (2004-03-29 21:41:00) [3]почему это в зеленых тонах, я в своей игрушке использую альфу - у меня все цвета нормально раборают.
laa (2004-03-27 10:56:00) [4]Ух.. Разобрался я как копировать:
BitBlt(Buffer.Canvas.Handle,x,y,48,48,Form1.TDXImageList.Items[0].Picture.Bitmap.canvas.handle,0,0,SRCCOPY);
Но только очень медленно выводит.
А DXDraw.Surface.DrawAlpha дествительно выводит полупрозрачные спрайты, но только в зеленом цвете :) Если в игрушке делать радар или ренген, то покатит (но тоже медленно).
lyeh (2004-03-27 00:56:00) [5]2 laa
Дык есть же что-то вроде DXDraw.Surface.DrawAlpha (или DXDraw.DrawAlpha, или DXImageList.Items[0].DrawAlpha - не помню)
А вообще блендинг средствами DelphiX, и DirectDraw в целом - жутко медленная вещь...
laa (2004-03-26 11:14:00) [6]Дело в том, что мне нужно вывести полупрозрачный спрайт. Для этого я в буфере смешиваю цвет фона с цветом спрайта, а затем уже вывожу на DXDraw1.Surface. А как скопировать спрайт с TDXImageList с №ХХ в свой буфер для обработки я так и не разобрался.
Omar2002 (2004-03-25 19:49:00) [7]А вобще на DelphiGFX воляется мг=ного примеров по DelphiX , покапайся там
Omar2002 (2004-03-25 19:43:00) [8]Ну я бы тебе посоветовал выводить все твои спрайты сразу на DXDraw1.Surface . Это так делается
DXImageList1.Items[0].Draw(DXDraw1.Surface,x,y,0);