Russian Qt Forum
Ноябрь 22, 2024, 13:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Рисование XFillPolygon  (Прочитано 4597 раз)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« : Май 23, 2012, 09:21 »

Доброго дня! подскажите, пожалуйста, как вывести XFillPolygon залитый не сплошным цветом, а заштрихованным?!
Если есть рабочий пример, поделитесь пожалуйста)

Делаю так:
Код:
void IndicatorWindow::xDrawPolygon( const QVector< QPoint >& pts, bool filled, QRgb color, int line_width  )
{
  
    XGCValues gcVals;
    gcVals.line_width = line_width;
    XChangeGC( display( ), pixGc( ), GCLineWidth, &gcVals );
    XSetForeground( display( ), pixGc( ), color );
    XSetFillStyle(display( ), pixGc( ), FillOpaqueStippled);

    XPoint *points = new XPoint[pts.size( )];

    for ( int i = 0; i < pts.size( ); ++i )
    {
       points[i].x = pts.at( i ).x( );
       points[i].y = pts.at( i ).y( );
    }


    XFillPolygon(display( ), drawable( ), pixGc( ), points, pts.size( ), Complex, 0);

    delete [] points;
}

Видимо для применения XSetFillStyle(display( ), pixGc( ), FillOpaqueStippled); необходимо установить еще какие-то параметры..
« Последнее редактирование: Май 23, 2012, 14:57 от Vladimir » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 23, 2012, 12:11 »

Код
C++ (Qt)
void QBrush::setStyle ( Qt::BrushStyle style )
Записан

Qt 5.11/4.8.7 (X11/Win)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #2 : Май 23, 2012, 12:21 »

Код
C++ (Qt)
void QBrush::setStyle ( Qt::BrushStyle style )

Как это поможет, если рисуется полигон средствами Х11 ?!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Май 23, 2012, 13:54 »

Как это поможет, если рисуется полигон средствами Х11 ?!
Неа, не поможет )

Нужно добавить "пунктир" в GC:
Код
C
 
static Pixmap stipple;
if( !stipple )
{
  char stipple_bits[] =  {
       0xee, 0xee, 0xdd, 0xdd, 0xbb, 0xbb, 0x77, 0x77,   /*  Slant Right  */
       0xee, 0xee, 0xdd, 0xdd, 0xbb, 0xbb, 0x77, 0x77,
       0xee, 0xee, 0xdd, 0xdd, 0xbb, 0xbb, 0x77, 0x77,
       0xee, 0xee, 0xdd, 0xdd, 0xbb, 0xbb, 0x77, 0x77  };
 
  stipple = XCreateBitmapFromData(
       display(), DefaultRootWindow( display() ), stipple_bits, 16, 16 );
}
 
XSetStipple( display(), pixGc(), stipple );
XSetFillStyle( display(), pixGc(), FillStippled );
 
« Последнее редактирование: Май 23, 2012, 13:57 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #4 : Май 23, 2012, 14:57 »

что-то похожее пытался сделать, но не получилось) это работает!!! спасибо! =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.186 секунд. Запросов: 23.