Сглаживание

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
MironenkoDima
Сообщения: 2
Зарегистрирован: 08 фев 2011, 16:55

Здравствуйте.
Имеется вот такая простая функция:

Код: Выделить всё

void DrawStudyExample(HWND hWnd)
{
    HDC hdc;
    HPEN hPen, hPenOld;
    unsigned int n, i;
    POINT pt[4];
    
    hdc = GetDC(hWnd);
    if (hdc)
    {
        n = 4;
        pt[0].x = 100; pt[0].y = 180;
        pt[1].x = 300; pt[1].y = 60;
        pt[2].x = 300; pt[2].y = 300;
        pt[3].x = 400; pt[3].y = 120;
        Rectangle(hdc, 0,0,700,500);
        PolyBezier(hdc, pt, 4);

        hPen = CreatePen(PS_DASHDOT, 1, RGB(0,0,0));
        hPenOld = (HPEN)SelectObject(hdc, hPen);

        for(i = 0; i <= n/2; i+=2)
        {
            MoveToEx(hdc, pt[i].x, pt[i].y, NULL);
            LineTo(hdc, pt[i+1].x, pt[i+1].y);
            //MoveToEx(hdc, pt[2].x, pt[2].y, NULL);
            //LineTo(hdc, pt[3].x, pt[3].y);
        }
    }
    SelectObject(hdc, hPenOld);
    DeleteObject(hPen);
    ReleaseDC(hWnd,hdc);
}
Которая рисует кривую Безье при нажатии кнопочки в контекстном меню..

Подскажите, пожалуйста, самый простой способ, как можно сделать сглаживание для этой кривой??
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Проще всего для этого пользоваться библиотекой GDI+, в которой имеется режим сглаживания. Указываешь одну из опций сглаживания и вся дальнейшая отрисовка линий и текста будет вестись в этом режиме.
MironenkoDima
Сообщения: 2
Зарегистрирован: 08 фев 2011, 16:55

Если не сложно, можно чуть поподробней про данную библиотеку..
Ответить