GetPixel

Тема в разделе "WASM.BEGINNERS", создана пользователем mOzG573, 3 ноя 2005.

  1. mOzG573

    mOzG573 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2005
    Сообщения:
    10
    Podskajite kak mojno realisowaty takuy temy , sapuskay process otkriwaetza nektoroe okno wnem ho4y proverity nektrii Pixel nahodyshisy kprimeru w coordinatah 100,100

    wot neyasno 4em peremenuy HDC sapolnyti. Esli mojno skinty primernii skelet sdesy
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Код (Text):
    1. invoke GetDC, hwnd
    2. mov hDC, eax
     
  3. mOzG573

    mOzG573 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2005
    Сообщения:
    10
    eshe woprosik



    invoke GetPixel,hdc,0,0

    mov tcol,eax



    kak is tcol witashity skolko tam Red,Green,Blue?



    wse po toije sheme :



    RGB macro red, green, blue

    xor eax, eax

    mov ah, blue

    shl eax, 8

    mov ah, green

    mov al, red

    endm



    ???
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Так же как и упаковывалось, только в обратном порядке:


    Код (Text):
    1. mov eax,tcol
    2. and eax,0FFh ;в eax - красный
    3.  
    4. mov eax,tcol
    5. shr eax,8
    6. and eax,0FFh ;в eax - зеленый
    7.  
    8. mov eax,tcol
    9. shr eax,16
    10. and eax,0FFh ;в eax - синий
     
  5. mOzG573

    mOzG573 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2005
    Сообщения:
    10
    wrode normalno wse no wot srawnenei krivo kakto wihodit , w MessageBox pokasiwet 4to 110 , no pri srawnenii po4emu goworitza 4to ne rawno , podskajite 4ego ne tak



    Transport Proc



    invoke GetDC,windhand

    mov hDC1, eax

    invoke GetPixel,hDC1,850,70

    and eax,0FFh

    ;mov hDC2,eax

    invoke dwtoa,eax,addr hDC2

    Invoke MessageBox, hwnd, addr hDC2, addr hDC2 , MB_OK+MB_ICONWARNING

    cmp hDC2,110

    je @F

    Invoke MessageBox, hwnd, addr Good, addr Good , MB_OK+MB_ICONWARNING

    ret

    @@:

    Invoke MessageBox, hwnd, addr Bad, addr Bad, MB_OK+MB_ICONWARNING

    ret



    Transport ENDP
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Нда???

    Может стоит поменять условие je на jne? Если нужно вывести в MessageBox addr Good...
     
  7. mOzG573

    mOzG573 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2005
    Сообщения:
    10
    da ne prosto kakto kriwo srawniwaetza cmp hDC2,110



    wsegda po4emuto nerawno daje w tom slu4aii kogda w etom pixele krasnii zwet 110
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Так ты же сравниваешь число 110 со строкой db '110',0 естественно, не будет совпадать, т.к. строка '110',0 - это последовательность из 4-х байт: 49, 49, 48, 0, т.е. ты сравниваешь 110 и 49. Если хочется сравнивать, то сравнивай либо две строки, либо два числа. :)


    Код (Text):
    1. Get_Colour proc
    2.    
    3.     LOCAL szBuffer[256]     :BYTE
    4.     LOCAL hDC               :DWORD
    5.     LOCAL colour            :DWORD
    6.     LOCAL colRed            :DWORD
    7.     LOCAL colGreen          :DWORD
    8.     LOCAL colBlue           :DWORD
    9.    
    10.     invoke  GetDC, hWnd
    11.     mov     hDC, eax
    12.     invoke  GetPixel, hDC, 10,10
    13.     mov     colour, eax
    14.    
    15.     mov     colRed, eax
    16.     mov     colGreen, eax
    17.     mov     colBlue, eax
    18.    
    19.    
    20.     and     colRed, 0FFh                    ; в colRed - красный (число 110)
    21.     shr     colGreen, 8
    22.     and     colGreen, 0FFh                  ; в colGreen - зеленый
    23.     shr     colBlue, 16
    24.     and     colBlue, 0FFh                   ; в colBlue - синий
    25.    
    26.     invoke  dwtoa, colRed, addr szBuffer    ; в szBuffer - строка '110',0
    27.    
    28.     cmp     colRed, 110
    29.     jne     @F
    30.         invoke  MessageBox, hWnd, SADD("colour is good"),NULL, MB_OK
    31.     @@:
    32.    
    33.     invoke ReleaseDC, hWnd, hDC
    34.     ret
    35.  
    36. Get_Colour endp
     
  9. mOzG573

    mOzG573 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2005
    Сообщения:
    10