void Cran::paintEvent(QPaintEvent *event)
{
QPainter painter(this); // Создаём объект отрисовщика
QBrush bgfon(QColor(48,172,220),Qt::NoBrush); // устанавливаем цвет фона и тип заливки (с фоном без фона и тип заливки)
painter.setRenderHint(QPainter::Antialiasing); // убираем резкие кубики
QPen pen_osn(Qt::black, 2, Qt::SolidLine, Qt::FlatCap); // кисть для основного тела
QPen pen_bashn(Qt::black, 4, Qt::SolidLine, Qt::FlatCap); // кисть для башни
painter.setBrush(bgfon); // задаём цвет фона
painter.setPen(pen_osn); // Устанавливаем кисть для линий и текста
QPainterPath path; // ресуем основные элементы
QPainterPath path2; // обводы элемент обводов
QPen pen2(Qt::darkGray); // обводы элемент обводов заменить на выборочный цвет
pen2.setWidthF(_myTexpr.size_mask); // обводы размер
painter.setRenderHint(QPainter::Antialiasing); // убираем резкие кубики
// блок чтоб не пересчитывать если размеры не изменились
if( _myTexpr.screen_size_x != this->width())
{
_myTexpr.screen_size_x = this->width();
_myTexpr.screen_size_y = this->height();
size_wgt_cran(this->width(), this->height());
}
if(_myTexpr.screen_size_y != this->height())
{
_myTexpr.screen_size_x = this->width();
_myTexpr.screen_size_y = this->height();
size_wgt_cran(this->width(), this->height());
}
// ---------рисуем фон ------------
if(_myTexpr.substrate == true)
{
qDebug() << "1";
// bgfon.setColor(Qt::red);
painter.setBrush(_myTexpr.rgb);
painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y); // рисуем квадрат
}
if(_myTexpr.substrate == false)
{
qDebug() << "2";
painter.setBrush(_myTexpr.rgb);
painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);
}
// ---------рисуем корпус------------
// обводы
if(_myTexpr.outline == true)
{
path2.addRect(_myTexpr.centering_by_x+_myTexpr.cran_height/2.1,
_myTexpr.centering_by_y+_myTexpr.cran_width/2.1,
_myTexpr.cran_width, _myTexpr.cran_height);
painter.strokePath(path2, pen2); // обводы элемент обводов
painter.drawPath(path2);
}
path.addRect( _myTexpr.centering_by_x+_myTexpr.cran_height/2.1,
_myTexpr.centering_by_y+_myTexpr.cran_width/2.1,
_myTexpr.cran_width, _myTexpr.cran_height ) ;
painter.drawPath(path);
// очищаем эту хрень
path.clear();
path2.clear();
// центрирование, поворот, возвращаем центрирование
painter.translate(this->width()/2.0, this->height()/2.0);
painter.rotate(_myTexpr.m_pitch);
painter.translate(-this->width()/2.0, -this->height()/2.0);
if(_myTexpr.outline == true)
{
path2.addRect( _myTexpr.centering_by_x+_myTexpr.cran_height/1.2,
_myTexpr.centering_by_y+_myTexpr.cran_width/4.1,
_myTexpr.cran_width/5, _myTexpr.cran_height/1.5 ) ;
painter.strokePath(path2, pen2); // обводы элемент обводов
painter.drawPath(path2);
}
path.addRect( _myTexpr.centering_by_x+_myTexpr.cran_height/1.2,
_myTexpr.centering_by_y+_myTexpr.cran_width/4.1,
_myTexpr.cran_width/5, _myTexpr.cran_height/1.5 ) ;
painter.drawPath(path);
}
this ansfer
path.clear();
path2.clear();
[image: 29bae9f5-f777-4e5a-bd20-b2b5ce7f7fc8.png]