Сделай два битмапа с шариком - на первом все пиксели шарика (не белого цвета) сделай чёрными. На втором, весь фон (белый, вокруг шарика) тоже сделай чёрным. Всё это делается в редакторе битмапа. Теперь рисуем первый битмап операцией AND, а затем второй (по тем же координатам) операцией OR.
А есть варианты без самодеятельности?Тоесть както зделать, чтобы чёрный цвет битмапа не отображался? Иещё попутный вопрос, как делают так что с одной картинки берут разные участки изображения?
В режимах рисования битмапа вроде можно установить параметр - все пиксели, цвет которых совпадает с цветом верхнего левого пиксела делаются прозрачными. Код (Text): BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Rop: Longint): Bool; Копиpует каpту бит из SrcDC в DestDC, выполняя указанную pастpовую опеpацию. DestDC: Контекст устpойства, пpинимающего каpту бит. X, Y: Веpхний левый угол пpямоугольника назначения. Width: Шиpина пpямоугольника назначения и каpты бит источника. Height: Высота пpямоугольника назначения и каpты бит источника. SrcDC: Контекст устpойства, их котоpого копиpуется каpта бит, или нуль для pастpовой опеpации только на DestDC. XSrc, YSrc: Веpхний левый угол SrcDC. Rop: Одна из констант теpнаpных pастpовых опеpаций: Blackness, DSTInvert, MergeCopy, MergePaint, NotSrcCopy, NotSrcErase, PatCopy, PatInvert, PatPaint, SrcAnd, SrcCopy, SrcErase, SrcInvert, SrcPaint, Whiteness. SrcCopy выполняет пpостое копиpование из источника в назначение. Какая-то из тернарных операций должна это делать...может быть. Почему-бы не покурить исходники, которые есть на сайте , А?
Код (Text): BOOL TransparentBlt( HDC hdcDest, // handle to destination DC int nXOriginDest, // x-coord of destination upper-left corner int nYOriginDest, // y-coord of destination upper-left corner int nWidthDest, // width of destination rectangle int hHeightDest, // height of destination rectangle HDC hdcSrc, // handle to source DC int nXOriginSrc, // x-coord of source upper-left corner int nYOriginSrc, // y-coord of source upper-left corner int nWidthSrc, // width of source rectangle int nHeightSrc, // height of source rectangle UINT crTransparent // color to make transparent );
К сожалению проблема не решена!!!! При первом и втором способе меняеться цветность..... Какие будут ещё предложения??? BOOL TransparentBlt( HDC hdcDest, // handle to destination DC int nXOriginDest, // x-coord of destination upper-left corner int nYOriginDest, // y-coord of destination upper-left corner int nWidthDest, // width of destination rectangle int hHeightDest, // height of destination rectangle HDC hdcSrc, // handle to source DC int nXOriginSrc, // x-coord of source upper-left corner int nYOriginSrc, // y-coord of source upper-left corner int nWidthSrc, // width of source rectangle int nHeightSrc, // height of source rectangle UINT crTransparent // color to make transparent ); Как этим пользоваться , какую библиотеку надо подключить?
Такс вот что я накалякал... .ELSEIF uMsg==WM_PAINT invoke BeginPaint,hWnd,addr ps mov hdc,eax invoke CreateCompatibleDC,hdc mov cdc,eax invoke SelectObject,cdc,hbitmap RGB 0,0,0 invoke TransparentBlt,hdc,0,0,150,150,cdc,0,0,150,150,eax invoke DeleteDC,cdc invoke EndPaint,hWnd,addr ps .ELSE Ошибок не выдает но почемуто не рисует.. в чём ошибка??? Рисунок красный с чёрныс фоном...
devillsd, godlsd Чем заставлять других гадать по кофейной гуще, прикрутили бы к сообщению исходник целиком, тогда и ответ будет более обстоятельный (не забудьте проверить, что архив можно считать с сайта, а то были преценденты с испорченными архивами) В аттаче сорц и ехе
Вот как можно, под WIN: 1. Обозначаешь начало отображения изображения (верхний правый угол). 2. Копируешь пиксели экрана, те, что будут закрыты изображением. 3. Выводишь твой рисунок, только белые пиксели заменяешь соответствующими пикселями экрана. 4. Можно еще перемещение мышью сделать. В основном адресная работа, только нужно все как следует подогнать.
Mikl__ ну ты пошутил это же раздел Бегинерс а ты мне дал настолько испорченый код... И хватает же совести..... Какие ещё будут исходжники транспарантом???..Жду АП
devillsd Чем он для тебя испорчен? Отсутствием инвоков или комментарии не те? Экзешник работает? Чтобы не создавать флуд пиши в личку - отвечу мгновенно
Всё ошибку нашол, проблема в битмапе была...чемто он транспорант не устроил=( Даю исходник моей проги со всеми вложениями...и не просто так!!! ВСЕ ЗАМЕЧАНИЯ ПО КОДУ ПРОШУ ВЫЛАЖИВАТЬ ЗДЕСЬ...НЕ ДАЙТЕ НОВИЧКУ ВОВЛЕЧЬ СЕБЯ-ЖЕ В ЗАБЛУЖДЕНИЕ!!!!!