Как сделать чтобы фон битмапа не отображался и был прозрачным???

Тема в разделе "WASM.BEGINNERS", создана пользователем devillsd, 11 мар 2008.

  1. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Есть окно есть битмап,шарик с белым фоном,как зделать так что бы белый фон был прозрачным?
     
  2. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Up Ну помогите же ....
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Сделай два битмапа с шариком - на первом все пиксели шарика (не белого цвета) сделай чёрными. На втором, весь фон (белый, вокруг шарика) тоже сделай чёрным. Всё это делается в редакторе битмапа. Теперь рисуем первый битмап операцией AND, а затем второй (по тем же координатам) операцией OR.
     
  4. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    А есть варианты без самодеятельности?Тоесть както зделать, чтобы чёрный цвет битмапа не отображался?
    Иещё попутный вопрос, как делают так что с одной картинки берут разные участки изображения?
     
  5. masm32

    masm32 New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    147
    В режимах рисования битмапа вроде можно установить параметр - все пиксели, цвет которых совпадает с цветом верхнего левого пиксела делаются прозрачными.

    Код (Text):
    1. BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc: Integer; Rop: Longint): Bool;
    2.  
    3. Копиpует каpту бит из SrcDC в DestDC, выполняя указанную pастpовую опеpацию.
    4.  
    5. DestDC: Контекст устpойства, пpинимающего каpту бит.
    6. X, Y: Веpхний левый угол пpямоугольника назначения.
    7. Width: Шиpина пpямоугольника назначения и каpты бит источника.
    8. Height: Высота пpямоугольника назначения и каpты бит источника.
    9. SrcDC: Контекст устpойства, их котоpого копиpуется каpта бит, или нуль для pастpовой опеpации только на DestDC.
    10. XSrc, YSrc: Веpхний левый угол SrcDC.
    11. Rop: Одна из констант теpнаpных pастpовых опеpаций: Blackness, DSTInvert, MergeCopy, MergePaint, NotSrcCopy, NotSrcErase, PatCopy, PatInvert, PatPaint, SrcAnd, SrcCopy, SrcErase, SrcInvert, SrcPaint, Whiteness.
    12. SrcCopy выполняет пpостое копиpование из источника в назначение.
    Какая-то из тернарных операций должна это делать...может быть.

    Почему-бы не покурить исходники, которые есть на сайте , А?
     
  6. LazzY

    LazzY New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2006
    Сообщения:
    123
    Код (Text):
    1. BOOL TransparentBlt(
    2.   HDC hdcDest,        // handle to destination DC
    3.   int nXOriginDest,   // x-coord of destination upper-left corner
    4.   int nYOriginDest,   // y-coord of destination upper-left corner
    5.   int nWidthDest,     // width of destination rectangle
    6.   int hHeightDest,    // height of destination rectangle
    7.   HDC hdcSrc,         // handle to source DC
    8.   int nXOriginSrc,    // x-coord of source upper-left corner
    9.   int nYOriginSrc,    // y-coord of source upper-left corner
    10.   int nWidthSrc,      // width of source rectangle
    11.   int nHeightSrc,     // height of source rectangle
    12.   UINT crTransparent  // color to make transparent
    13. );
     
  7. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    К сожалению проблема не решена!!!!
    При первом и втором способе меняеться цветность.....
    Какие будут ещё предложения???

    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
    );

    Как этим пользоваться , какую библиотеку надо подключить?
     
  8. godlsd

    godlsd New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    3
    Такс вот что я накалякал...
    .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
    Ошибок не выдает но почемуто не рисует..
    в чём ошибка??? Рисунок красный с чёрныс фоном...
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    devillsd, godlsd
    Чем заставлять других гадать по кофейной гуще, прикрутили бы к сообщению исходник целиком, тогда и ответ будет более обстоятельный (не забудьте проверить, что архив можно считать с сайта, а то были преценденты с испорченными архивами)
    В аттаче сорц и ехе
     
  10. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Вот мой исходник...с фалом ресурсом всё ок..проверял екзе скопом всересурсы на месте...
     
  11. LazzY

    LazzY New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2006
    Сообщения:
    123
  12. LazzY

    LazzY New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2006
    Сообщения:
    123
    должно рисовать :) .. мб пустой\потертый hBitmap? =)
     
  13. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Вот как можно, под WIN:

    1. Обозначаешь начало отображения изображения (верхний правый угол).
    2. Копируешь пиксели экрана, те, что будут закрыты изображением.
    3. Выводишь твой рисунок, только белые пиксели заменяешь соответствующими пикселями экрана.
    4. Можно еще перемещение мышью сделать.

    В основном адресная работа, только нужно все как следует подогнать.
     
  14. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Дайте ктото исходник плиз с нормально работающим TransparentBlt....
     
  15. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    devillsd
    Мой разве не работает?
     
  16. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Mikl__
    ну ты пошутил это же раздел Бегинерс а ты мне дал настолько испорченый код...
    И хватает же совести.....
    Какие ещё будут исходжники транспарантом???..Жду
    АП
     
  17. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    LazzY
    Дело в том что БитБолтом рисует а транспарант болтом нет...
    что делать...это уже не выносимо!!
     
  18. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    devillsd
    Чем он для тебя испорчен? Отсутствием инвоков или комментарии не те? Экзешник работает? Чтобы не создавать флуд пиши в личку - отвечу мгновенно
     
  19. devillsd

    devillsd New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    131
    Всё ошибку нашол, проблема в битмапе была...чемто он транспорант не устроил=(
    Даю исходник моей проги со всеми вложениями...и не просто так!!!
    ВСЕ ЗАМЕЧАНИЯ ПО КОДУ ПРОШУ ВЫЛАЖИВАТЬ ЗДЕСЬ...НЕ ДАЙТЕ НОВИЧКУ ВОВЛЕЧЬ СЕБЯ-ЖЕ В ЗАБЛУЖДЕНИЕ!!!!!
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.568
    Адрес:
    Russia
    devillsd
    /offf
    Жгете дяденька...