Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: Vladimir от Май 23, 2012, 09:21



Название: [РЕШЕНО] Рисование XFillPolygon
Отправлено: Vladimir от Май 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); необходимо установить еще какие-то параметры..


Название: Re: Рисование XFillPolygon
Отправлено: GreatSnake от Май 23, 2012, 12:11
Код
C++ (Qt)
void QBrush::setStyle ( Qt::BrushStyle style )


Название: Re: Рисование XFillPolygon
Отправлено: Vladimir от Май 23, 2012, 12:21
Код
C++ (Qt)
void QBrush::setStyle ( Qt::BrushStyle style )

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


Название: Re: Рисование XFillPolygon
Отправлено: GreatSnake от Май 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 );
 


Название: Re: Рисование XFillPolygon
Отправлено: Vladimir от Май 23, 2012, 14:57
что-то похожее пытался сделать, но не получилось) это работает!!! спасибо! =)