Advertisement
peterzig

[PIU] Paint v4 (od Tomka)

Nov 2nd, 2016
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 19.58 KB | None | 0 0
  1. #include <Windows.h>
  2. #define COLOURS 16
  3. #define BRUSH_SIZE 20
  4. #define SQUARE_SIZE 35
  5.  
  6. TCHAR className[] = TEXT("Nazwa_klasy");
  7. TCHAR appName[] = TEXT("Nazwa_okna");
  8. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  9.  
  10. void DrawBoxOutline(HWND, POINT, POINT, RECT, LPARAM);
  11. void UstawPrzybornik(HWND); // ustawia przybornik po lewej stronie
  12. void UstawFigury(); // Ustawia figury pod kolorami
  13. void UstawKolory(); // Ustawia kolory w przyborniku
  14. void JakieKolory(); // Tworzymy palete kolorow
  15. bool SprawdzKolizjePrzybornik(RECT, LPARAM); //wylaczy obszar przybornika z rysowania
  16. bool SprawdzKolizjeKwadraty(RECT, LPARAM); //wylaczy obszar przybornika z rysowania
  17.  
  18. enum TOOL
  19. {
  20.     NONE,
  21.     FILL_TRIANGLE,
  22.     TRIANGLE,
  23.     FILL_CIRCLE,
  24.     CIRCLE,
  25.     FILL_SQUARE,
  26.     SQUARE,
  27.     LINE,
  28.     BRUSH_CIRCLE,
  29.     BRUSH_SQUARE
  30. } tool;
  31.  
  32. RECT przybornik;
  33. RECT tools[9];
  34. COLORREF color = RGB(0, 0, 0);
  35.  
  36. struct Colours {
  37.     RECT rect;
  38.     COLORREF color;
  39. } colours[COLOURS];
  40.  
  41. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ilCmdLine, int nCmdShow)
  42. {
  43.     WNDCLASSEX wC = { 0 };
  44.     HWND hwnd = NULL;
  45.     MSG msg;
  46.  
  47.     wC.cbSize = sizeof(WNDCLASSEX);
  48.     wC.style = CS_VREDRAW | CS_HREDRAW;
  49.     wC.cbClsExtra = NULL;
  50.     wC.cbWndExtra = NULL;
  51.     wC.hInstance = hInstance;
  52.     wC.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  53.     wC.lpfnWndProc = WndProc;
  54.     wC.lpszClassName = className;
  55.     wC.lpszMenuName = 0;
  56.     wC.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  57.     wC.hIconSm = NULL;
  58.     wC.hCursor = LoadCursor(NULL, IDC_CROSS);
  59.  
  60.     ATOM result = RegisterClassEx(&wC);
  61.     if (!result)
  62.     {
  63.         MessageBox(0, TEXT("Błąd funkcji RegisterClassEx"), appName, MB_OK);
  64.     }
  65.  
  66.     hwnd = CreateWindow(
  67.         className,
  68.         appName,
  69.         (WS_OVERLAPPEDWINDOW | WS_VISIBLE) ^ (WS_SIZEBOX | WS_MAXIMIZEBOX | WS_MINIMIZEBOX),
  70.         100,
  71.         100,
  72.         800,
  73.         600,
  74.         NULL,
  75.         NULL,
  76.         hInstance,
  77.         NULL
  78.     );
  79.  
  80.     if (hwnd = NULL)
  81.     {
  82.         if (result)
  83.         {
  84.             UnregisterClass(className, hInstance);
  85.             return -1;
  86.         }
  87.         return -1;
  88.     }
  89.  
  90.     ShowWindow(hwnd, nCmdShow);
  91.     UpdateWindow(hwnd);
  92.     while (GetMessage(&msg, NULL, 0, 0))
  93.     {
  94.         TranslateMessage(&msg);
  95.         DispatchMessage(&msg);
  96.     }
  97.  
  98.     if (result)
  99.     {
  100.         UnregisterClass(className, hInstance);
  101.     }
  102.     return msg.wParam;
  103. }
  104.  
  105. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  106. {
  107.     static BOOL fBlocking, fValidBox;
  108.     static POINT ptBeg, ptEnd, ptBoxBeg, ptBoxEnd;
  109.     HDC hdc;
  110.     PAINTSTRUCT ps;
  111.  
  112.     switch (msg)
  113.     {
  114.     case WM_CREATE:
  115.         JakieKolory();
  116.         break;
  117.  
  118.     case WM_LBUTTONDOWN:
  119.     {
  120.         if (!SprawdzKolizjePrzybornik(przybornik, lParam))
  121.         {
  122.             ptBeg.x = ptEnd.x = LOWORD(lParam);
  123.             ptBeg.y = ptEnd.y = HIWORD(lParam);
  124.  
  125.             DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  126.  
  127.             SetCapture(hwnd);
  128.             SetCursor(LoadCursor(NULL, IDC_CROSS));
  129.                
  130.             fBlocking = true;
  131.         }
  132.         else
  133.         {
  134.             for (int i = 0; i < COLOURS; i++)
  135.                 if (SprawdzKolizjeKwadraty(colours[i].rect, lParam))
  136.                 {
  137.                     color = colours[i].color;
  138.                     break;
  139.                 }
  140.  
  141.             for (int i = 0; i < 9; i++)
  142.             {
  143.                 if (SprawdzKolizjeKwadraty(tools[i], lParam))
  144.                 {
  145.                     switch (i)
  146.                     {
  147.                     case 0:
  148.                         tool = FILL_TRIANGLE;
  149.                         break;
  150.                     case 1:
  151.                         tool = TRIANGLE;
  152.                         break;
  153.                     case 2:
  154.                         tool = FILL_CIRCLE;
  155.                         break;
  156.                     case 3:
  157.                         tool = CIRCLE;
  158.                         break;
  159.                     case 4:
  160.                         tool = FILL_SQUARE;
  161.                         break;
  162.                     case 5:
  163.                         tool = SQUARE;
  164.                         break;
  165.                     case 6:
  166.                         tool = LINE;
  167.                         break;
  168.                     case 7:
  169.                         tool = BRUSH_CIRCLE;
  170.                         break;
  171.                     case 8:
  172.                         tool = BRUSH_SQUARE;
  173.                         break;
  174.                     }
  175.                     break;
  176.                 }
  177.             }
  178.             ReleaseCapture();
  179.             fBlocking = false;
  180.         }
  181.     }
  182.     break;
  183.  
  184.     case WM_MOUSEMOVE:
  185.     {
  186.         if (!SprawdzKolizjePrzybornik(przybornik, lParam))
  187.         {
  188.             if (tool == BRUSH_CIRCLE && fBlocking == true)
  189.             {
  190.                 hdc = GetDC(hwnd);
  191.                 HBRUSH pedzel, pudelko;
  192.                 HPEN pen, box;
  193.                 pedzel = CreateSolidBrush(color);
  194.                 pen = CreatePen(PS_SOLID, 0, color);
  195.                 pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  196.                 box = (HPEN)SelectObject(hdc, pen);
  197.                 Ellipse(hdc, LOWORD(lParam) - (BRUSH_SIZE / 2), HIWORD(lParam) - (BRUSH_SIZE / 2), LOWORD(lParam) + (BRUSH_SIZE / 2), HIWORD(lParam) + (BRUSH_SIZE / 2));
  198.                 SelectObject(hdc, pudelko);
  199.                 SelectObject(hdc, pen);
  200.                 DeleteObject(box);
  201.                 DeleteObject(pedzel);
  202.                 DeleteObject(pen);
  203.                 DeleteObject(pudelko);
  204.                 ReleaseDC(hwnd, hdc);
  205.             }
  206.             else if (tool == BRUSH_SQUARE && fBlocking == true)
  207.             {
  208.                 hdc = GetDC(hwnd);
  209.                 HBRUSH pedzel, pudelko;
  210.                 HPEN pen, box;
  211.                 pedzel = CreateSolidBrush(color);
  212.                 pen = CreatePen(PS_SOLID, 0, color);
  213.                 pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  214.                 box = (HPEN)SelectObject(hdc, pen);
  215.                 Rectangle(hdc, LOWORD(lParam) - (BRUSH_SIZE / 2), HIWORD(lParam) - (BRUSH_SIZE / 2), LOWORD(lParam) + (BRUSH_SIZE / 2), HIWORD(lParam) + (BRUSH_SIZE / 2));
  216.                 SelectObject(hdc, pudelko);
  217.                 SelectObject(hdc, pen);
  218.                 DeleteObject(box);
  219.                 DeleteObject(pedzel);
  220.                 DeleteObject(pen);
  221.                 DeleteObject(pudelko);
  222.                 ReleaseDC(hwnd, hdc);
  223.             }
  224.             else if (fBlocking)
  225.                 {
  226.                     SetCursor(LoadCursor(NULL, IDC_CROSS));
  227.                     DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  228.  
  229.                     ptEnd.x = LOWORD(lParam);
  230.                     ptEnd.y = HIWORD(lParam);
  231.  
  232.                     DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  233.                 }
  234.         }
  235.         else
  236.         {
  237.             if (fBlocking)
  238.             {
  239.                 DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  240.  
  241.                 ReleaseCapture();
  242.                 SetCursor(LoadCursor(NULL, IDC_ARROW));
  243.  
  244.                 fBlocking = false;
  245.             }
  246.         }
  247.     }
  248.         break;
  249.  
  250.     case WM_LBUTTONUP:
  251.     {
  252.         if (!SprawdzKolizjePrzybornik(przybornik, lParam))
  253.         {
  254.             if (fBlocking)
  255.             {
  256.                 DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  257.  
  258.                 ptBoxBeg = ptBeg;
  259.                 ptBoxEnd.x = LOWORD(lParam);
  260.                 ptBoxEnd.y = HIWORD(lParam);
  261.  
  262.                 ReleaseCapture();
  263.                 SetCursor(LoadCursor(NULL, IDC_ARROW));
  264.  
  265.                 fBlocking = false;
  266.                 fValidBox = true;
  267.  
  268.                 InvalidateRect(hwnd, NULL, false);
  269.             }
  270.         }
  271.     }
  272.         break;
  273.  
  274.     case WM_CHAR:
  275.     {
  276.         if (fBlocking & (wParam == '\x1B'))
  277.         {
  278.             DrawBoxOutline(hwnd, ptBeg, ptEnd, przybornik, lParam);
  279.  
  280.             ReleaseCapture();
  281.             SetCursor(LoadCursor(NULL, IDC_ARROW));
  282.  
  283.             fBlocking = false;
  284.         }
  285.     }
  286.         break;
  287.  
  288.     case WM_PAINT:
  289.     {
  290.         if (!SprawdzKolizjePrzybornik(przybornik, lParam))
  291.         {
  292.             UstawPrzybornik(hwnd);
  293.             UstawKolory();
  294.             UstawFigury();
  295.             hdc = BeginPaint(hwnd, &ps);
  296.             HBRUSH pudelko, pedzel;
  297.  
  298.             HPEN pen, box;
  299.             pen = CreatePen(PS_SOLID, 5, color);
  300.  
  301.             pedzel = CreateSolidBrush(RGB(128, 128, 128));
  302.             pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  303.  
  304.             Rectangle(hdc, przybornik.left, przybornik.top, przybornik.right, przybornik.bottom);
  305.             SelectObject(hdc, pudelko);
  306.             DeleteObject(pudelko);
  307.             DeleteObject(pedzel);
  308.  
  309.  
  310.             for (int i = 0; i < COLOURS; i++)
  311.             {
  312.                 pedzel = CreateSolidBrush(colours[i].color);
  313.                 pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  314.  
  315.                 Rectangle(hdc, colours[i].rect.left, colours[i].rect.top, colours[i].rect.right, colours[i].rect.bottom);
  316.                 SelectObject(hdc, pudelko);
  317.                 DeleteObject(pudelko);
  318.                 DeleteObject(pedzel);
  319.             }
  320.  
  321.             for (int i = 0; i < 9; i++)
  322.             {
  323.                 pedzel = CreateSolidBrush(RGB(255, 255, 255));
  324.                 pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  325.  
  326.                 Rectangle(hdc, tools[i].left, tools[i].top, tools[i].right, tools[i].bottom);
  327.                 SelectObject(hdc, pudelko);
  328.  
  329.                 DeleteObject(pudelko);
  330.                 DeleteObject(pedzel);
  331.             }
  332.  
  333.             pedzel = CreateSolidBrush(RGB(0, 0, 0));
  334.             pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  335.  
  336.             POINT point[3];
  337.             point[0].x = tools[0].left + 5;
  338.             point[0].y = tools[0].top + SQUARE_SIZE - 5;
  339.  
  340.             point[1].x = tools[0].left + SQUARE_SIZE - 5;
  341.             point[1].y = tools[0].top + SQUARE_SIZE - 5;
  342.  
  343.             point[2].x = tools[0].left + (SQUARE_SIZE / 2);
  344.             point[2].y = tools[0].top + 5;
  345.             Polygon(hdc, point, 3);
  346.  
  347.             SelectObject(hdc, pudelko);
  348.             DeleteObject(pudelko);
  349.             DeleteObject(pedzel);
  350.  
  351.             pedzel = CreateSolidBrush(RGB(255, 255, 255));
  352.             pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  353.  
  354.             point[0].x = tools[1].left + 5;
  355.             point[0].y = tools[1].top + SQUARE_SIZE - 5;
  356.  
  357.             point[1].x = tools[1].left + SQUARE_SIZE - 5;
  358.             point[1].y = tools[1].top + SQUARE_SIZE - 5;
  359.  
  360.             point[2].x = tools[1].left + (SQUARE_SIZE / 2);
  361.             point[2].y = tools[1].top + 5;
  362.             Polygon(hdc, point, 3);
  363.  
  364.             SelectObject(hdc, pudelko);
  365.             DeleteObject(pudelko);
  366.             DeleteObject(pedzel);
  367.  
  368.             pedzel = CreateSolidBrush(RGB(0, 0, 0));
  369.             pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  370.             Ellipse(hdc, tools[2].left + 5, tools[2].top + 5, tools[2].left + SQUARE_SIZE - 5, tools[2].top + SQUARE_SIZE - 5);
  371.  
  372.             SelectObject(hdc, pudelko);
  373.             Ellipse(hdc, tools[3].left + 5, tools[3].top + 5, tools[3].left + SQUARE_SIZE - 5, tools[3].top + SQUARE_SIZE - 5);
  374.  
  375.             SelectObject(hdc, pedzel);
  376.             Rectangle(hdc, tools[4].left + 5, tools[4].top + 5, tools[4].left + SQUARE_SIZE - 5, tools[4].top + SQUARE_SIZE - 5);
  377.             SelectObject(hdc, pudelko);
  378.  
  379.             Rectangle(hdc, tools[5].left + 5, tools[5].top + 5, tools[5].left + SQUARE_SIZE - 5, tools[5].top + SQUARE_SIZE - 5);
  380.  
  381.             SelectObject(hdc, pedzel);
  382.             Rectangle(hdc, tools[6].left + 5, tools[6].top + 17, tools[6].left + SQUARE_SIZE - 5, tools[6].top + SQUARE_SIZE - 17);
  383.             SelectObject(hdc, pudelko);
  384.  
  385.             SelectObject(hdc, pedzel);
  386.             Ellipse(hdc, tools[7].left + 10, tools[7].top + 10, tools[7].left + SQUARE_SIZE - 10, tools[7].top + SQUARE_SIZE - 10);
  387.             SelectObject(hdc, pudelko);
  388.  
  389.             SelectObject(hdc, pedzel);
  390.             Rectangle(hdc, tools[8].left + 10, tools[8].top + 10, tools[8].left + SQUARE_SIZE - 10, tools[8].top + SQUARE_SIZE - 10);
  391.             SelectObject(hdc, pudelko);
  392.  
  393.             DeleteObject(pudelko);
  394.             DeleteObject(pedzel);
  395.  
  396.             if (fValidBox)
  397.             {
  398.                 switch (tool)
  399.                 {
  400.                 case FILL_TRIANGLE:
  401.                 {
  402.                     pedzel = CreateSolidBrush(color);
  403.                     pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  404.                     POINT point[3];
  405.                     point[0].x = ptBoxBeg.x;
  406.                     point[0].y = ptBoxBeg.y;
  407.  
  408.                     point[1].x = ptBoxEnd.x;
  409.                     point[1].y = ptBoxBeg.y;
  410.  
  411.                     point[2].x = (ptBoxBeg.x + ptBoxEnd.x) / 2;
  412.                     point[2].y = ptBoxEnd.y;
  413.  
  414.                     Polygon(hdc, point, 3);
  415.                     SelectObject(hdc, pedzel);
  416.                     DeleteObject(pudelko);
  417.                     DeleteObject(pedzel);
  418.                 }
  419.                 break;
  420.  
  421.                 case TRIANGLE:
  422.                 {
  423.                     box = (HPEN)SelectObject(hdc, pen);
  424.                     POINT point[3];
  425.                     point[0].x = ptBoxBeg.x;
  426.                     point[0].y = ptBoxBeg.y;
  427.  
  428.                     point[1].x = ptBoxEnd.x;
  429.                     point[1].y = ptBoxBeg.y;
  430.  
  431.                     point[2].x = (ptBoxBeg.x + ptBoxEnd.x) / 2;
  432.                     point[2].y = ptBoxEnd.y;
  433.  
  434.                     Polygon(hdc, point, 3);
  435.                 }
  436.                 break;
  437.                 case FILL_CIRCLE:
  438.                     pedzel = CreateSolidBrush(color);
  439.                     pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  440.                     Ellipse(hdc, ptBoxBeg.x, ptBoxBeg.y, ptBoxEnd.x, ptBoxEnd.y);
  441.                     SelectObject(hdc, pedzel);
  442.                     DeleteObject(pudelko);
  443.                     DeleteObject(pedzel);
  444.                     break;
  445.  
  446.                 case CIRCLE:
  447.                     box = (HPEN)SelectObject(hdc, pen);
  448.                     Ellipse(hdc, ptBoxBeg.x, ptBoxBeg.y, ptBoxEnd.x, ptBoxEnd.y);
  449.                     DeleteObject(pen);
  450.                     DeleteObject(box);
  451.                     break;
  452.  
  453.                 case FILL_SQUARE:
  454.                     pedzel = CreateSolidBrush(color);
  455.                     pudelko = (HBRUSH)SelectObject(hdc, pedzel);
  456.                     Rectangle(hdc, ptBoxBeg.x, ptBoxBeg.y, ptBoxEnd.x, ptBoxEnd.y);
  457.                     SelectObject(hdc, pedzel);
  458.                     DeleteObject(pudelko);
  459.                     DeleteObject(pedzel);
  460.                     break;
  461.  
  462.                 case SQUARE:
  463.                     box = (HPEN)SelectObject(hdc, pen);
  464.                     Rectangle(hdc, ptBoxBeg.x, ptBoxBeg.y, ptBoxEnd.x, ptBoxEnd.y);
  465.                     break;
  466.  
  467.                 case LINE:
  468.                 {
  469.                     box = (HPEN)SelectObject(hdc, pen);
  470.                     MoveToEx(hdc, ptBeg.x, ptBeg.y, &ptBeg);
  471.                     LineTo(hdc, ptBoxEnd.x, ptBoxEnd.y);
  472.                 }
  473.                 case BRUSH_CIRCLE:
  474.                     break;
  475.                 case BRUSH_SQUARE:
  476.                     break;
  477.                 default:
  478.                     tool = NONE;
  479.                     break;
  480.                 }
  481.                 SelectObject(hdc, pedzel);
  482.                 DeleteObject(pudelko);
  483.                 DeleteObject(pedzel);
  484.             }
  485.             if (fBlocking)
  486.             {
  487.                 SetROP2(hdc, R2_NOT);
  488.                 SelectObject(hdc, GetStockObject(NULL_BRUSH));
  489.                 Rectangle(hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y);
  490.             }
  491.             EndPaint(hwnd, &ps);
  492.         }
  493.     }
  494.         break;
  495.  
  496.     case WM_CLOSE:
  497.     {
  498.         if (MessageBox(0, TEXT("Czy na pewno chcesz zakończyć działanie aplikacji?"), appName, MB_YESNO) == IDYES)
  499.             DestroyWindow(hwnd);
  500.     }
  501.     break;
  502.  
  503.     case WM_DESTROY:
  504.         PostQuitMessage(0);
  505.     break;
  506.  
  507.     default:
  508.         return DefWindowProc(hwnd, msg, wParam, lParam);
  509.     }
  510.     UpdateWindow(hwnd);
  511.     return 0;
  512. }
  513.  
  514. void DrawBoxOutline(HWND hwnd, POINT ptBeg, POINT ptEnd, RECT rect, LPARAM lParam)
  515. {
  516.         HDC hdc;
  517.         hdc = GetDC(hwnd);
  518.  
  519.         SetROP2(hdc, R2_NOT);
  520.         SelectObject(hdc, GetStockObject(NULL_BRUSH));
  521.  
  522.         Rectangle(hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y);
  523.         ReleaseDC(hwnd, hdc);
  524. }
  525.  
  526. void UstawPrzybornik(HWND hwnd) // ustawia przybornik po lewej stronie
  527. {
  528.     RECT windowRect;
  529.     GetClientRect(hwnd, &windowRect);
  530.  
  531.     przybornik.bottom = windowRect.bottom;
  532.     przybornik.top = windowRect.top;
  533.     przybornik.right = windowRect.right;
  534.     przybornik.left = windowRect.right - 100;
  535. }
  536.  
  537. void UstawFigury() // Ustawia figury pod kolorami
  538. {
  539.     int count = 0;
  540.     int y = 20;
  541.     for (int i = 0; i < 9; i++)
  542.     {
  543.         tools[i].left = colours[10 + count].rect.left;
  544.         tools[i].top = colours[15].rect.top + SQUARE_SIZE + y;
  545.         tools[i].bottom = colours[15].rect.bottom + SQUARE_SIZE + y;
  546.         tools[i].right = colours[10 + count].rect.right;
  547.  
  548.         count++;
  549.         if (count % 2 == 0)
  550.         {
  551.             count = 0;
  552.             y += (SQUARE_SIZE + 5);
  553.         }
  554.     }
  555. }
  556.  
  557. void UstawKolory()  // Ustawia kolory w przyborniku
  558. {
  559.     int x = 0, y = 15;      // Poczatkowy odstep od gory ekranu
  560.     int count = 0;  // Posluzy do przesuwania sie do kolejnego wiersza
  561.  
  562.     for (int i = 0; i < COLOURS; i++)
  563.     {
  564.         x = ((10 + SQUARE_SIZE)* count) + przybornik.left + 10;
  565.  
  566.         colours[i].rect.left = x;
  567.         colours[i].rect.top = y;
  568.         colours[i].rect.right = x + SQUARE_SIZE;
  569.         colours[i].rect.bottom = y + SQUARE_SIZE;
  570.  
  571.         count++;
  572.         if (count % 2 == 0)
  573.         {
  574.             count = 0;
  575.             y += (SQUARE_SIZE + 5);
  576.         }
  577.     }
  578. }
  579.  
  580. void JakieKolory() // Tworzymy palete kolorow
  581. {
  582.     colours[0].color = RGB(0, 0, 0);
  583.     colours[1].color = RGB(150, 150, 150);
  584.     colours[2].color = RGB(150, 0, 0);
  585.     colours[3].color = RGB(255, 0, 0);
  586.     colours[4].color = RGB(0, 150, 0);
  587.     colours[5].color = RGB(0, 255, 0);
  588.     colours[6].color = RGB(150, 150, 0);
  589.     colours[7].color = RGB(255, 255, 0);
  590.     colours[8].color = RGB(0, 0, 150);
  591.     colours[9].color = RGB(0, 0, 255);
  592.     colours[10].color = RGB(150, 0, 150);
  593.     colours[11].color = RGB(255, 0, 255);
  594.     colours[12].color = RGB(0, 150, 150);
  595.     colours[13].color = RGB(0, 255, 255);
  596.     colours[14].color = RGB(100, 100, 100);
  597.     colours[15].color = RGB(255, 255, 255);
  598. }
  599.  
  600. bool SprawdzKolizjePrzybornik(RECT rect, LPARAM lParam) //wylaczy obszar przybornika z rysowania
  601. {
  602.     DWORD mouseX = LOWORD(lParam);
  603.     DWORD mouseY = HIWORD(lParam);
  604.     if (tool == BRUSH_CIRCLE || tool == BRUSH_SQUARE)
  605.     {
  606.         if ((mouseX > rect.left - (BRUSH_SIZE / 2) && mouseX < rect.right + (BRUSH_SIZE / 2)) || (mouseY < rect.bottom + (BRUSH_SIZE / 2) && mouseY > rect.top - (BRUSH_SIZE / 2)))
  607.             return true;
  608.     }
  609.     if (mouseX > rect.left && mouseX < rect.right && mouseY < rect.bottom && mouseY > rect.top)
  610.         return true;
  611.     return false;
  612. }
  613.  
  614. bool SprawdzKolizjeKwadraty(RECT rect, LPARAM lParam) //wylaczy obszar przybornika z rysowania
  615. {
  616.     DWORD mouseX = LOWORD(lParam);
  617.     DWORD mouseY = HIWORD(lParam);
  618.  
  619.     if (mouseX > rect.left  && mouseX < rect.right && mouseY < rect.bottom && mouseY > rect.top)
  620.         return true;
  621.     return false;
  622. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement