 
З.Ы В DirectDraw7...


 


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
 [/code]
 [/code]









 Ладно, почитаю на досуге документаху от мелкомягких - может что нарою...
  Ладно, почитаю на досуге документаху от мелкомягких - может что нарою...






13GHOST писал(а):Подскажите как сделать програчность картинки в диапазоне цветов, т.е. имеем битмап надо его загрузить так чтобы сделать програчным не какой-то один цвет, а диапазон цветов, например от RGB(240,240,240) до RGB(255,255,255)
З.Ы В DirectDraw7...
 Пространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?.. И какие цвета находятся между RGB(r1, g1, b1) и RGB(r2, g2, b2)?
 Пространство цветов в RGB - 3-хмерное. Как можно указать диапазон точек в 3D через 2 точки ("от RGB(240,240,240) до RGB(255,255,255)")?.. И какие цвета находятся между RGB(r1, g1, b1) и RGB(r2, g2, b2)?

Данный тим прозрачности осуществляется достаточно просто. Поверхность следует переносить попиксельно на приемник, исключая перенос точек с необходимым цветовым ключом.
 Именно для того, чтобы не делать это попиксельно для каждой поверхности можно (и нужно) выставлять диапазон псевдопрозрачного цвета, который не переносится при блиттинге с соответствующим параметром.
 Именно для того, чтобы не делать это попиксельно для каждой поверхности можно (и нужно) выставлять диапазон псевдопрозрачного цвета, который не переносится при блиттинге с соответствующим параметром.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 и ответь на вопрос: находится ли третий цвет между вторым и первым, или это только сначала так казалось.




 Так что это одно и то же. Кстати, есть ли возможность сделать побитовый сдвиг числа средствами API? Че-т я такого не припоминаю... Хочется сделать аналог того, что описано в указанной статье для VB...
 Так что это одно и то же. Кстати, есть ли возможность сделать побитовый сдвиг числа средствами API? Че-т я такого не припоминаю... Хочется сделать аналог того, что описано в указанной статье для VB...

Odrick писал(а):Гм... Ну смотря как воспринимать информацию RGB(240,240,240) (если говорить о VB-шной функции) как раз возвращает &hF0F0F0Так что это одно и то же.
Odrick писал(а):Кстати, есть ли возможность сделать побитовый сдвиг числа средствами API? Че-т я такого не припоминаю... Хочется сделать аналог того, что описано в указанной статье для VB...



 Оки, постараюсь выжать немного времени и написать функцийки для перевода цвета из 24-битного в 16-битный режим и обратно с привязкой к видеокарточке конкретной машины.
 Оки, постараюсь выжать немного времени и написать функцийки для перевода цвета из 24-битного в 16-битный режим и обратно с привязкой к видеокарточке конкретной машины.



 А по поводу замены при загрузке - а зачем делать лишнюю работу, если это может (и должен) делать DirectDraw?
 А по поводу замены при загрузке - а зачем делать лишнюю работу, если это может (и должен) делать DirectDraw?

Dim ddtrans1 As DDCOLORKEY
ddtrans1.low = RGB(0, 0, 0)
ddtrans1.high = RGB(0, 0, 0)
Surface.SetColorKey DDCKEY_SRCBLT, ddtrans1 . С помощью PhotoImpact'a прощелкал все зоны с цветом RGB(1,1,1) - они таковыми и являются, т.е. имеют цвет RGB(1,1,1). Последовательно увеличивая значения цветов, я увидел, что прозрачность теряется только при значении цвета >=8. Раньше такого не было...
. С помощью PhotoImpact'a прощелкал все зоны с цветом RGB(1,1,1) - они таковыми и являются, т.е. имеют цвет RGB(1,1,1). Последовательно увеличивая значения цветов, я увидел, что прозрачность теряется только при значении цвета >=8. Раньше такого не было...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9