рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдорддрднреЗрджреЛрдВ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ





рдЕрдХреНрд╕рд░ рдореИрдВ рдЦреБрдж рдХреЗ рдмрд╛рдж рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо, рдЦреЗрд▓ рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдЬреАрдм рд╡рд┐рдЪрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдпреЗ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рдбрд░рд╛рддреЗ рд╣реИрдВред рдФрд░ рд╣рд░ рдмрд╛рд░ рдореИрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо / рд╕рд╛рдЗрдЯ / рдЧреЗрдо рдХреЛ рдХреИрд╕реЗ рд╣реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реБрд░рдХреНрд╖рд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред рд╢рд╛рдпрдж, рдкреЗрд╢реЗрд╡рд░ рд╡рд┐рдХреГрддрд┐ рдЦреБрдж рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИред рдпрд╛ рдпрд╣ рд╕рдВрдЪрд┐рдд рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рдЪреЗрддрди рдЗрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпреЗ рдЗрдЪреНрдЫрд╛рдПрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рд░рд╣рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рдж рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдЖрдЬ рдРрд╕реЗ рд╣реА рдПрдХ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдБ ...



рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдХреА рдмрд╛рдд рд╣реИред рд╡рд░реНрд╖, рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдореЗрдВ, 2008 рдореЗрдВред рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд░реНрджрд┐рдпреЛрдВ рдХрд╛ рджрд┐рди рдерд╛ред рдХреБрдЫ рднреА рдирд╣реАрдВ рдПрдХ рд░рд╛рддреЛрдВ рдХреА рдиреАрдВрдж рд╣рд░рд╛рдо рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рдкрддреНрдиреА рдПрдХ рдЧреЗрдо рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЦреЗрд▓рддреА рд╣реИ ...





рдпрд╣ рдЦреЗрд▓ "5 рдЕрдВрддрд░ рдЦреЛрдЬреЗрдВ" (рдореВрд▓ "5 рд╕реНрдкреЙрдЯ" рдореЗрдВ) рдерд╛ред рдЬрдм рдореИрдВрдиреЗ рдЧреЗрдо рдХреЗ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рджреЗрдЦрд╛, рддреЛ рдореБрдЭреЗ рддреБрд░рдВрдд рдЙрдкрд░реЛрдХреНрдд рдЗрдЪреНрдЫрд╛ рд╣реБрдИ - "рдХреНрдпрд╛ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдорддрднреЗрджреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджрдмрд╛рдПрдВ?" рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХреБрдЫ рднреА рд╕рдВрднрд╡ рд╣реИред



рдЦреЗрд▓ рд╣реА рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рдФрд░ рдЖрджрд┐рдо рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдорддрднреЗрджреЛрдВ рдХреЗ рд╕рд╛рде 2 рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдиреНрд╣реЗрдВ рдорд╛рдЙрд╕ рд╕реЗ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рд░реНрдгрдп рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рднреА рдЪреБрдирд╛:

1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдорджрдж рдХрд╛рд░реНрдпрдХреНрд░рдо (рдкреАрдкреА) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛

2. рд▓рдХреНрд╖реНрдп рдЦреЗрд▓ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн рдХрд┐рдпрд╛

3. рдПрдХ рдЬрд╛рджреВ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рджрдмрд╛рддрд╛ рд╣реИ

4. рдЪрд┐рддреНрд░ рдХреЗ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ PP рдЕрдВрддрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ



рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореБрдЭрд╕реЗ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ: рд╡реЗ рд▓реЙрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рддрдм рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╕реНрдореГрддрд┐рд╣реАрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЬреАрд╡рд┐рдд рдЬреАрд╡ рд╣реИред рд╡рд╣ рдЪреБрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдмрд╛рддреВрдиреА, рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рд╛рдВрддреНрд╡рдирд╛ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ ...





рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреАрдкреА рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ред рдореИрдВрдиреЗ рдПрдХ рд╣реЙрдЯрдХреА рд╕рдВрдпреЛрдЬрди Ctrl + F1 (рдкреНрд░рдХрд╛рд░, "рд╕рд╣рд╛рдпрддрд╛") рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛, рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЦреЗрд▓ рд╕реЗ 2 рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреИрд╕реЗ рдвреВрдВрдвреЗрдВ? рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ "рджреЗрдЦрд╛" рдЬрд╛рдирд╛ рдерд╛ред рдпрд╣рд╛рдВ рднреА, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдХрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд╝реЛрдХрд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЛ "рдлреЛрдЯреЛрдЧреНрд░рд╛рдл" рдХрд░рддреЗ рд╣реИрдВ:



рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ
HWND targetWindow = ::GetForegroundWindow(); HDC targetWindowDC = ::GetWindowDC(targetWindow); if (targetWindowDC != NULL) { HDC memoryDC = ::CreateCompatibleDC(targetWindowDC); if (memoryDC != NULL) { CRect targetWindowRectangle; ::GetWindowRect(targetWindow, &targetWindowRectangle); HBITMAP memoryBitmap = ::CreateCompatibleBitmap(targetWindowDC, targetWindowRectangle.Width(), targetWindowRectangle.Height()); if (memoryBitmap != NULL) { ::SelectObject(memoryDC, memoryBitmap); ::BitBlt(memoryDC, 0, 0, targetWindowRectangle.Width(), targetWindowRectangle.Height(), targetWindowDC, 0, 0, SRCCOPY);
      
      









рдЧреЗрдо рдореЗрдВ рдЕрдВрддрд░ рд╡рд╛рд▓реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реНрдерд┐рд░ рд╣реИ, рдЧреЗрдо рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рднреА рд╣реИ - рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдСрдлрд╝рд╕реЗрдЯреНрд╕ рдФрд░ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ (рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗрд╡рд▓ рдЗрд╕ рдЧреЗрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣рдо 2 рдЪрд┐рддреНрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ "рдЬрд╝реЛрд░рд┐рдо" рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХреЗ рдКрдкрд░ рдПрдХ рд░рдЦрддреЗ рд╣реИрдВ:

XOR рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ
  #define BITMAP_WIDTH 375 #define BITMAP_HEIGHT 292 #define COORD_X_LEFT_IMAGE_UPPER_LEFT 19 #define COORD_Y_LEFT_IMAGE_UPPER_LEFT 152 #define COORD_X_RIGHT_IMAGE_UPPER_LEFT 405 #define COORD_Y_RIGHT_IMAGE_UPPER_LEFT COORD_Y_LEFT_IMAGE_UPPER_LEFT ::BitBlt( memoryDC, COORD_X_LEFT_IMAGE_UPPER_LEFT, COORD_Y_LEFT_IMAGE_UPPER_LEFT, BITMAP_WIDTH, BITMAP_HEIGHT, memoryDC, COORD_X_RIGHT_IMAGE_UPPER_LEFT, COORD_Y_RIGHT_IMAGE_UPPER_LEFT, SRCINVERT );
      
      









рдирд┐рдореНрди рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:





рдФрд░ рдлрд┐рд░ рдорддрднреЗрджреЛрдВ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред



рдЕрдм, рдЬрдм рдореИрдВ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдпрд╛ рдПрдХ рдЯрд░реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ред рдЗрд╕реА рддрд░рд╣ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рд╖рдп рдкрд░ред рдФрд░ рд╡рд╣рд╛рдВ рдореИрдВрдиреЗ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд▓рд┐рдЦрд╛ред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдирдпрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╛рдо рднреА рд╣реИред рдФрд░ рд╡рд╣ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдмрддрд╛рдУред



рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЧреИрд░-рдХрд╛рд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд▓реА рддрд╕реНрд╡реАрд░ рд╣реИ рдЬрд╣рд╛рдВ рдорддрднреЗрдж рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдХрд░реАрдм рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдЫ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдорддрднреЗрдж рдХрд╛рдлреА рд╕реНрдерд╛рдиреАрдп рд╣реИрдВред рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

1. рдЪрд┐рддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛

2. рдПрдХ рдЧреИрд░-рдХрд╛рд▓рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдвреВрдВрдвреЗрдВ

3. рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдЧреИрд░-рдХрд╛рд▓реЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ - рд╣рдордиреЗ рдпрд╣ рд╕рдм рдкрд╛рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИ (рдпрджрд┐ рдкреНрд░рд╢реНрди рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реБрдП рдереЗ)



рдпрд╣рд╛рдВ рд╕рдорд╛рдпреЛрдЬреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдкрдбрд╝реЛрд╕ рдХрд╛ "рдЖрдХрд╛рд░" рд╣реИ - рдЖрдк рдЗрд╕рд╕реЗ рдХрд┐рддрдиреА рджреВрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдорддрднреЗрджреЛрдВ рдХреЗ рдЕрдзрд┐рдХ "рд╕реНрдореАрдпрд░" рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдкреВрд░реНрдг рд╣реИ рдФрд░, рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрдВрдЧреЗ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдЪрд┐рддреНрд░ рд╕реНрд╡рдпрдВ рд╕рдВрдкреАрдбрд╝рди, рдПрдХ рдЭреВрд▓рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдЙрд╕ рдХрд░реНрд╕рд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рд╕реЗ рд╢реЛрд░ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрддрд░ рдкрд░ рдПрдХ рдЕрдВрддрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдЧреЛрдЪрд░ред рдЗрд╕рд▓рд┐рдП, рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЧреИрд░-рдХрд╛рд▓рд╛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢реЛрд░ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЕрдВрддрд░ред



рдмрд╛рдж рдореЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдУрдкрдирд╕реАрд╡реА рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ (рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд╣реЛрдЧрд╛)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВред рд▓реЗрдХрд┐рди рддрдм рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛ред





рдорддрднреЗрджреЛрдВ рдХреА рдЦреЛрдЬ рдХрд╛ рд╕реНрд░реЛрдд (рдХреЛрдб рдкреБрд░рд╛рдирд╛ рд╣реИ, рдореИрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ):

рдорддрднреЗрдж рдЦреЛрдЬреЗрдВ
 #include "StdAfx.h" #include ".\bitmapinfo.h" #include <stack> const CPixel CBitmapInfo::m_defaultPixel; CBitmapInfo::CBitmapInfo(void) { m_uWidth = 0; m_uHeight = 0; } CBitmapInfo::~CBitmapInfo(void) { Clear(); } HRESULT CBitmapInfo::Clear() { m_uWidth = 0; m_uHeight = 0; // Pixel clearing for (CPixelAreaIterator pixelAreaIterator = m_arPixels.begin(); pixelAreaIterator != m_arPixels.end(); ++pixelAreaIterator) { delete (*pixelAreaIterator); } m_arPixels.clear(); return S_OK; } HRESULT CBitmapInfo::LoadBitmap(HDC hDC, const CRect &bitmapRect) { Clear(); m_uWidth = bitmapRect.Width(); m_uHeight = bitmapRect.Height(); m_arPixels.assign(m_uHeight * m_uWidth, NULL); for (INT nPixelY = 0; nPixelY < m_uHeight; ++nPixelY) { for (INT nPixelX = 0; nPixelX < m_uWidth; ++nPixelX) { CPixel *pPixel = new CPixel(nPixelX, nPixelY, ::GetPixel(hDC, nPixelX + bitmapRect.left, nPixelY + bitmapRect.top)); SetPixel(nPixelX, nPixelY, pPixel); } } return S_OK; } HRESULT CBitmapInfo::GetPixelAreas(INT nPixelVicinityWidth, CPixelAreaList &arPixelAreaList) { arPixelAreaList.clear(); if (m_uHeight > 0) { // Reinitialize all pixel reserved values (if needed) const CPixel *pFirstPixel = GetPixel(0, 0); if (pFirstPixel->IsValid() != FALSE && pFirstPixel->GetReserved() != CBitmapInfo::m_defaultPixel.GetReserved()) { for (INT nPixelY = 0; nPixelY < m_uHeight; ++nPixelY) { for (INT nPixelX = 0; nPixelX < m_uWidth; ++nPixelX) { CPixel *pPixel = GetPixel(nPixelX, nPixelY); pPixel->SetReserved(-1); } } } // Process pixels typedef stack<CPixel*> CPixelStack; // Look through all bitmap pixels const UINT uPixelCount = m_uWidth * m_uHeight; UINT uPixelAreaIndex = 0; for (INT nPixelY = 0; nPixelY < (INT)m_uHeight; ++nPixelY) { for (INT nPixelX = 0; nPixelX < (INT)m_uWidth; ++nPixelX) { CPixel *pPixel = GetPixel(nPixelX, nPixelY); // If this pixel is valid (belongs to bitmap) if (pPixel->IsValid() != FALSE) { // If this current pixel is not already processed if (pPixel->GetReserved() == CBitmapInfo::m_defaultPixel.GetReserved()) { // Set this pixel as processed pPixel->SetReserved(uPixelAreaIndex); // If this pixel matches localization criteria if (pPixel->GetColor() != COLOR_BITMAP_BACKGROUND) { // Add pixel to its area CPixelArea *pPixelArea = new CPixelArea(); pPixelArea->push_back(pPixel); // Push pixel to its stack CPixelStack pixelStack; pixelStack.push(pPixel); do { CPixel *pVicinityPixel = pixelStack.top(); pixelStack.pop(); INT nStartingX = pVicinityPixel->GetX(); INT nStartingY = pVicinityPixel->GetY(); for (INT nVicinityY = nStartingY - nPixelVicinityWidth; nVicinityY <= nStartingY + nPixelVicinityWidth; ++nVicinityY) { for (INT nVicinityX = nStartingX - nPixelVicinityWidth; nVicinityX <= nStartingX + nPixelVicinityWidth; ++nVicinityX) { pVicinityPixel = GetPixel(nVicinityX, nVicinityY); // If this pixel is valid (belongs to bitmap) if (pVicinityPixel->IsValid() != FALSE) { // If this current pixel is not already processed if (pVicinityPixel->GetReserved() == CBitmapInfo::m_defaultPixel.GetReserved()) { // Set this pixel as processed pVicinityPixel->SetReserved(uPixelAreaIndex); // If this pixel matches localization criteria if (pVicinityPixel->GetColor() != COLOR_BITMAP_BACKGROUND) { pPixelArea->push_back(pVicinityPixel); pixelStack.push(pVicinityPixel); } } } } } } while (pixelStack.size() > 0); arPixelAreaList.push_back(pPixelArea); ++uPixelAreaIndex; } } } } } } return S_OK; }
      
      









рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рднреА рд╕рд░рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд╛рдП рдЧрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЧреЗрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕реА рднреА DirectX'ov (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЧреЗрдо рд╡рд┐рдВрдбреЛ рдкрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкреНрд░рджрд░реНрд╢рди рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдЧрд░ DirectX рд╣реЛрддрд╛, рддреЛ рд╕реНрдХреНрд░реАрди рдХреЗ "рдЪрд┐рддреНрд░ рд▓реЗрдирд╛" рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛, рди рдХрд┐ рдЦреЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдВрддрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ WinAPI рдирд┐рдпрдо (рдлрд╝рдВрдХреНрд╢рди :: рдЖрдпрдд) ()ред рдмреИрдХрд▓рд╛рдЗрдЯ рдкрд░рд┐рдгрд╛рдо:







рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдП рдЧрдП рдЦреЗрд▓ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ - рдкреАрдкреА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреЗрд▓ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛, рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рднреА рдЦреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдмрд╛рдз рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдмреЙрдЯ рдореЗрдВ рдкреЗрдВрдЪ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛ рдЖрд╕рд╛рди рд╣реИ - рдЕрдВрддрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЬрд╛рдирдХрд░, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдорд╛рдЙрд╕ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдВрддрд░ рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ ...



рдпрд╣ рд╕рдм рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рддрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд░рд╛рдд рдХреА рдиреАрдВрдж рдереАред



All Articles