@dron_andron

Как нарисовать ломаную линию по кликам мыши C++ WinAPI?

Требуется сначала перевести исходную точку в начало координат (сделано), а затем при каждом клике мыши в новую точку соединять ее с предыдущей линией. На данный момент каждая новая точка соединяется просто с началом координат

Код
case WM_LBUTTONDOWN:
    {
        HDC hdc;
        WORD xPos, yPos, nSize;
        TCHAR szBuf[80];
        DWORD dw;
        HANDLE File;
        RECT rc;
        GetClientRect (hWnd, &rc); // client window size

        const int xW = rc.right;
        const int yW = rc.bottom;

        //Отображение координат клика на окошке
        xPos = LOWORD(lp);
        yPos = HIWORD(lp);
        hdc = GetDC(hWnd);

        if (xPos > 0 & yPos > 0 & xPos < xW & yPos < yW)
        {
            HDC hDC;

            hDC=BeginPaint(hWnd, &ps);
            hDC=GetDC(hWnd);
            HBRUSH hBrush;
            hBrush=CreateSolidBrush(RGB(255,0,0));
            SelectObject(hDC,hBrush);
            Ellipse(hDC, xPos - 4, yPos - 4, xPos + 4, yPos + 4);
            MoveToEx(hDC, 20, yW / 2, NULL);
            LineTo(hDC, xPos, yPos);
            EndPaint(hWnd, &ps);
        }
}


Результат
6311107bf172b968101809.png
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
У вас каждый раз выполняется MoveToEx() в начало координат. Надо вам куда-то сохранить координаты последней точки и делать MoveToEx туда, потом LineTo в новые координаты и запомнить их.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы