void SettingDialog::paintEvent(QPaintEvent *) { QString skin_name; bool is_read = Util::readInit(QString("./user.ini"), QString("skin"), skin_name); if(is_read) { if(skin_name.isEmpty()) { skin_name = QString(":/skin/17_big"); } } else { skin_name = QString(":/skin/17_big"); } QPainter painter(this); painter.drawPixmap(rect(), QPixmap(skin_name)); QPainter painter2(this); QLinearGradient linear2(rect().topLeft(), rect().bottomLeft()); linear2.setColorAt(0, Qt::white); linear2.setColorAt(0.5, Qt::white); linear2.setColorAt(1, Qt::white); painter2.setPen(Qt::white); //设定画笔颜色,到时侯就是边框颜色 painter2.setBrush(linear2); painter2.drawRect(QRect(0, 60, this->width(), this->height()-60)); QPainter painter3(this); painter3.setPen(Qt::gray); static const QPointF points[4] = {QPointF(0, 60), QPointF(0, this->height()-1), QPointF(this->width()-1, this->height()-1), QPointF(this->width()-1, 60)}; painter3.drawPolyline(points, 4); }
void SkinsWidget::paintEvent(QPaintEvent *) { if(!is_change) { //初始化皮肤对画框的皮肤 pSettings->beginGroup("skin"); skinName = pSettings->value("background").toString(); skinName = QString(":/skin/image/") + skinName; pSettings->endGroup(); pSettings->sync(); } QPainter painter(this); painter.drawPixmap(rect(), QPixmap(skinName)); QPainter painter2(this); QLinearGradient linear2(rect().topLeft(), rect().bottomLeft()); linear2.setColorAt(0, Qt::white); linear2.setColorAt(0.5, Qt::white); linear2.setColorAt(1, Qt::white); painter2.setPen(Qt::white); painter2.setBrush(linear2); painter2.drawRect(QRect(0, 30, this->width(), this->height()-30)); QPainter painter3(this); painter3.setPen(Qt::gray); static const QPointF points[4] = {QPointF(0, 30), QPointF(0, this->height()-1), QPointF(this->width()-1, this->height()-1), QPointF(this->width()-1, 30)}; painter3.drawPolyline(points, 4); }
static inline void apply(Linear1 const& lineargeometry1, Linear2 const& lineargeometry2) { typedef typename bg_detail::relate::turns::get_turns < Linear1, Linear2 >::turn_info turn_info; typedef std::vector<turn_info> turns_container; typedef bg_turns::filter_continue_turns < turns_container, true > filter_continue_turns; typedef bg_turns::remove_duplicate_turns < turns_container, EnableRemoveDuplicateTurns > remove_duplicate_turns; turns_container turns; Linear1 linear1(lineargeometry1); Linear2 linear2(lineargeometry2); Linear2 linear2_reverse(linear2); boost::geometry::reverse(linear2_reverse); turns_container turns_all, rturns_all; compute_turns(turns_all, linear1, linear2); compute_turns(rturns_all, linear1, linear2_reverse); turns_container turns_wo_cont(turns_all); turns_container rturns_wo_cont(rturns_all); filter_continue_turns::apply(turns_wo_cont); filter_continue_turns::apply(rturns_wo_cont); std::sort(boost::begin(turns_all), boost::end(turns_all), bg_turns::less_seg_fraction_other_op<>()); std::sort(boost::begin(turns_wo_cont), boost::end(turns_wo_cont), bg_turns::less_seg_fraction_other_op<>()); std::sort(boost::begin(rturns_all), boost::end(rturns_all), bg_turns::less_seg_fraction_other_op<std::greater<boost::geometry::signed_size_type> >()); std::sort(boost::begin(rturns_wo_cont), boost::end(rturns_wo_cont), bg_turns::less_seg_fraction_other_op<std::greater<boost::geometry::signed_size_type> >()); remove_duplicate_turns::apply(turns_all); remove_duplicate_turns::apply(turns_wo_cont); remove_duplicate_turns::apply(rturns_all); remove_duplicate_turns::apply(rturns_wo_cont); #ifdef BOOST_GEOMETRY_TEST_DEBUG std::cout << std::endl << std::endl; std::cout << "### ORIGINAL TURNS ###" << std::endl; bg_turns::print_turns(linear1, linear2, turns_all); std::cout << std::endl << std::endl; std::cout << "### ORIGINAL REVERSE TURNS ###" << std::endl; bg_turns::print_turns(linear1, linear2_reverse, rturns_all); std::cout << std::endl << std::endl; std::cout << "### TURNS W/O CONTINUE TURNS ###" << std::endl; bg_turns::print_turns(linear1, linear2, turns_wo_cont); std::cout << std::endl << std::endl; std::cout << "### REVERSE TURNS W/O CONTINUE TURNS ###" << std::endl; bg_turns::print_turns(linear1, linear2_reverse, rturns_wo_cont); std::cout << std::endl << std::endl; #endif BOOST_CHECK_MESSAGE(boost::size(turns_wo_cont) == boost::size(rturns_wo_cont), "Incompatible turns count: " << boost::size(turns_wo_cont) << " and " << boost::size(rturns_wo_cont) << " for L1: " << bg::wkt(lineargeometry1) << ", L2: " << bg::wkt(lineargeometry2)); }