Страница: 1 |
Сначало надо черные кольца нарисовать, затем цветные... Вот статейка: 2 Алексей: п.1: За статейку большой сенкс! п.2: А их над чёрным рисовать, да? Да и трех колец хватит, зачем четвёртое? Здорово работает! Но вот чтобы создать маски для всех кадров моей новой игрухи, понадобится уйма времени. Я уж лучше буду создавать маски програмно, при запуске игры. Выигрыш во времени огромен! Здорово работает! Но вот чтобы создать маски для всех кадров моей новой игрухи, понадобится уйма времени. Я уж лучше буду создавать маски програмно, при запуске игры. Выигрыш во времени огромен! Да, кстати, в той статье функцию в тексте называют неверно (bitbTl Вместо bitbLt) Внесу и я свою лепту.... новичок я тут ..... но уже мне нравится.... Начну с того почему у тебя такой "прикол" ты используешь констнту SRCAND (хотя лучше будет использовать уже имеющиеся константы вВБ... vbSrcAnd) это значит что биты будут накладыватся с использовнием логиского И .... что это значит ? а то вот у тебятам белый цвет есть .... он имеет значение &HFFFFFF и он накладывается на ... нашу кртинку.... чтотполучаем ?... да получаем тоже что и было то бишь белый цвет будет не заметен на картинке.... а чтож будет если цвет не имеет значение &HFFFFFF .... то будут удалятся те значения которые не входят в данную маску..... ии получается эффект цветного стекла..... НУ ЧТО ДЕЛАТЬ ТО ???? я тут предложил дв врианта........ 1)Взять положить 2) Перенос битов Приведённые примеры ... я сделал над тем что ты выложил ... Private Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean эта АПи нам поможит перенисти биты .... и указав транспарентный цвет белый..... vbWhite или &HFFFFFF ... то мы получим нужный результат .... зачем тогда второйто ??? способ .... хм.. да так для разнообразия )+ Вот её вызов.... незабудь поставить Scae Mod ... в режим пикселов так как АПИ работают только с пикселами TransparentBlt target.hdc, 110, 110, source.ScaleWidth, source.ScaleHeight, source.hdc, 0, 0, source.ScaleWidth, source.ScaleHeight, vbWhite +я поставил Авторредро.... в режим Тру.... так что ещё надо будет отрефрешить рисунок (если не ставил то не надо...) Способ два..... объявляем АПИ Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long Dim w As Integer Dim h As Integer Dim i As Long, j As Long Dim hdcDest As Long, hdcSrc As Long Dim testColor32 As Long w = source.Width \ Screen.TwipsPerPixelX h = source.Height \ Screen.TwipsPerPixelY i = 0: j = 0: hdcSrc = source.hdc: hdcDest = target.hdc Do While i < h Do While j < w testColor32 = GetPixel(hdcSrc, j, i) If testColor32 <> &HFFFFFF Then SetPixel hdcDest, j + 110, i + 110, testColor32 End If j = j + 1 Loop j = 0 i = i + 1 Loop target.Refresh ' если только авторедро в ТРУ поствил если нет то нет ..... ну вот я думаю ответил на твой вопрос ... как можно полно.... П.С: Да у меня плохая клвиатура .... Страница: 1 |
Вопрос: Помогите BitBlt-новичку!
Добавлено: 12.11.03 17:20
Автор вопроса: Morpheus | Web-сайт:
Братья по разуму! Помогите BitBlt-новичку решить вот такую задачку:
Дано: Проэкт, форма, бутон, 2 пикчербокса.
1ый-source - картинка (маленькая) с тремя сцеплеными кольцами (красным, зелёным и синим) на белом фоне.
2ой - target (большая) - кадр из фильма Матрица, где я стою с двумя автоматиками.
Задача-по клику по бутону копироветь изображение source на target, без белых краёв.
Я написал простой код в 12 строк, работает, НО!!! кольца копируются какими-то полупрозрачными. Вобщем вопрос заключается в том, КАК мне выбрать ДРУГОЙ цвет, не БЕЛЫЙ.
Вот ссылка для загрузки моего тестового проэкта.
Заранее благодарен.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #1
Добавлено: 13.11.03 04:26
http://www.hypertech.ru/article/showarticletext.asp?group=5&id=2&page=2
Номер ответа: 2
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 13.11.03 04:47
Номер ответа: 3
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #3
Добавлено: 13.11.03 08:56
Черный - это чтоб кольца не были полупрозрачными, сначала рисуешь черное, затем сверху цветное. См. пример в той статье.
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 13.11.03 11:23
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 13.11.03 11:25
Номер ответа: 6
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #6
Добавлено: 13.11.03 20:51