Dim dd As DirectDraw7
Dim ddsd2 As ddsd2 As DDSURFACEDESC2
Dim key As DDCOLORKEY
Dim DXLoadSprite As DirectDrawSurface7
ddsd2.lHeight = 32
ddsd2.lWidth = 32
Set DXLoadSprite = dd.CreateSurfaceFromFile("sprite.bmp", ddsd2)
key.low = &h000000
key.high = &h00FF00
DXLoadSprite.SetColorKey DDCKEY_SRCBLT, key
13GHOST писал(а):Подскажите как сделать програчность картинки в диапазоне цветов, т.е. имеем битмап надо его загрузить так чтобы сделать програчным не какой-то один цвет, а диапазон цветов, например от RGB(240,240,240) до RGB(255,255,255)
З.Ы В DirectDraw7...
Данный тим прозрачности осуществляется достаточно просто. Поверхность следует переносить попиксельно на приемник, исключая перенос точек с необходимым цветовым ключом.
1. Как спрайт на экране повернуть, отразить по вертикали\горизонтали, что б не создавать лишние кадры анимации с соответствующим поворотом?
2. Как получить цвет любого пиксела в любом спрайте или хотя бы узнать, прозрачен этот пиксел на экране или нет?
Dim ReсTmp As RECT
RecTmp.Left = 0
RecTmp.Top = 0
RecTmp.Right = 32
RecTmp.Bottom = 32
Sprite.Lock RecTmp, ddsd2, DDLOCK_WAIT, 0
nColor = Sprite.GetLockedPixel(nX, nY)
Sprite.Unlock RecTmp
Чего-то я не въеду. Пространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?.. И какие цвета находятся между RGB(r1, g1, b1) и RGB(r2, g2, b2)?
Odrick писал(а):Думаю, как найти диапазон от 15790320 до 16777215 понятно?
Пространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?..
Чего-то я не въеду. Пространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?.. И какие цвета находятся между RGB(r1, g1, b1) и RGB(r2, g2, b2)?
? Ты действительно так думаеш???
Odrick писал(а):Дык... Само собой. Я просто пытаю объяснить человеку, чтоПространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?..
это несколько неправильное утверждение
alibek писал(а):Odrick писал(а):Думаю, как найти диапазон от 15790320 до 16777215 понятно?
Неправильно.
Надо инкрементировать составляющие.
Odrick писал(а):Уф... Отсмеялся, отоспался.... Теперь, пожалуй, попробую объяснить:
RGB(240,240,240) = &hF0F0F0 = 15790320
RGB(255,255,255) = &hFFFFFF = 16777215
Думаю, как найти диапазон от 15790320 до 16777215 понятно?
Раз отсмеялся, то задумайся, а лучше нарисуй рядом цвета &hF0F0F0 = 15790320, &hFFFFFF = 16777215, и, например, &hF42400 = 16000000 и ответь на вопрос: находится ли третий цвет между вторым и первым, или это только сначала так казалось.
Odrick писал(а):Гм... Ну смотря как воспринимать информацию RGB(240,240,240) (если говорить о VB-шной функции) как раз возвращает &hF0F0F0 Так что это одно и то же.
Odrick писал(а):Кстати, есть ли возможность сделать побитовый сдвиг числа средствами API? Че-т я такого не припоминаю... Хочется сделать аналог того, что описано в указанной статье для VB...
Dim ddtrans1 As DDCOLORKEY
ddtrans1.low = RGB(0, 0, 0)
ddtrans1.high = RGB(0, 0, 0)
Surface.SetColorKey DDCKEY_SRCBLT, ddtrans1
Сейчас этот форум просматривают: Yandex-бот и гости: 28