qt的源代码

源代码在线查看: 6.10 实例:符合图形绘画.txt

软件大小: 63 K
上传用户: yuyx2003
关键词: 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				 class Window : public QWidget
				 {
				     Q_OBJECT
				 public:
				     Window();
				 private slots:
				     void fillRuleChanged();
				     void fillGradientChanged();
				     void penColorChanged();
				private:
				     void populateWithColors(QComboBox *comboBox);
				     QVariant currentItemData(QComboBox *comboBox);
				enum { NumRenderAreas = 9 };
				     RenderArea *renderAreas[NumRenderAreas];
				     QLabel *fillRuleLabel;
				     QLabel *fillGradientLabel;
				     QLabel *fillToLabel;
				     QLabel *penWidthLabel;
				     QLabel *penColorLabel;
				     QLabel *rotationAngleLabel;
				     QComboBox *fillRuleComboBox;
				     QComboBox *fillColor1ComboBox;
				     QComboBox *fillColor2ComboBox;
				     QSpinBox *penWidthSpinBox;
				     QComboBox *penColorComboBox;
				     QSpinBox *rotationAngleSpinBox;
				 };
				Window::Window()
				 {
				     QPainterPath rectPath;
				     rectPath.moveTo(20.0, 30.0);
				     rectPath.lineTo(80.0, 30.0);
				     rectPath.lineTo(80.0, 70.0);
				     rectPath.lineTo(20.0, 70.0);
				     rectPath.closeSubpath();
				QPainterPath roundRectPath;
				     roundRectPath.moveTo(80.0, 35.0);
				     roundRectPath.arcTo(70.0, 30.0, 10.0, 10.0, 0.0, 90.0);
				     roundRectPath.lineTo(25.0, 30.0);
				     roundRectPath.arcTo(20.0, 30.0, 10.0, 10.0, 90.0, 90.0);
				     roundRectPath.lineTo(20.0, 65.0);
				     roundRectPath.arcTo(20.0, 60.0, 10.0, 10.0, 180.0, 90.0);
				     roundRectPath.lineTo(75.0, 70.0);
				     roundRectPath.arcTo(70.0, 60.0, 10.0, 10.0, 270.0, 90.0);
				     roundRectPath.closeSubpath();
				 QPainterPath ellipsePath;
				     ellipsePath.moveTo(80.0, 50.0);
				     ellipsePath.arcTo(20.0, 30.0, 60.0, 40.0, 0.0, 360.0);
				QPainterPath piePath;
				     piePath.moveTo(50.0, 50.0);
				     piePath.arcTo(20.0, 30.0, 60.0, 40.0, 60.0, 240.0);
				     piePath.closeSubpath();
				  QPainterPath polygonPath;
				     polygonPath.moveTo(10.0, 80.0);
				 polygonPath.lineTo(20.0, 10.0);
				     polygonPath.lineTo(80.0, 30.0);
				     polygonPath.lineTo(90.0, 70.0);
				     polygonPath.closeSubpath();
				QPainterPath groupPath;
				     groupPath.moveTo(60.0, 40.0);
				     groupPath.arcTo(20.0, 20.0, 40.0, 40.0, 0.0, 360.0);
				     groupPath.moveTo(40.0, 40.0);
				     groupPath.lineTo(40.0, 80.0);
				     groupPath.lineTo(80.0, 80.0);
				     groupPath.lineTo(80.0, 40.0);
				     groupPath.closeSubpath();
				 QPainterPath textPath;
				     QFont timesFont("Times", 50);
				     timesFont.setStyleStrategy(QFont::ForceOutline);
				     textPath.addText(10, 70, timesFont, tr("Qt"));
				class RenderArea : public QWidget
				 {
				     Q_OBJECT
				 public:
				     RenderArea(const QPainterPath &path, QWidget *parent = 0);
				     QSize minimumSizeHint() const;
				     QSize sizeHint() const;
				 public slots:
				     void setFillRule(Qt::FillRule rule);
				     void setFillGradient(const QColor &color1, const QColor &color2);
				     void setPenWidth(int width);
				     void setPenColor(const QColor &color);
				     void setRotationAngle(int degrees);
				 protected:
				 void paintEvent(QPaintEvent *event);
				 private:
				     QPainterPath path;
				     QColor fillColor1;
				     QColor fillColor2;
				     int penWidth;
				     QColor penColor;
				     int rotationAngle;
				 };
				 RenderArea::RenderArea(const QPainterPath &path, QWidget *parent)
				     : QWidget(parent), path(path)
				 {
				     penWidth = 1;
				     rotationAngle = 0;
				     setBackgroundRole(QPalette::Base);
				 }
				  QSize RenderArea::minimumSizeHint() const
				 {
				     return QSize(50, 50);
				 }
				 QSize RenderArea::sizeHint() const
				 {
				     return QSize(100, 100);
				 }
				 void RenderArea::setFillRule(Qt::FillRule rule)
				 {
				     path.setFillRule(rule);
				     update();
				 }
				 void RenderArea::setFillGradient(const QColor &color1, const QColor &color2)
				 {
				 fillColor1 = color1;
				     fillColor2 = color2;
				     update();
				 }
				 void RenderArea::setPenWidth(int width)
				 {
				     penWidth = width;
				     update();
				 }
				 void RenderArea::setPenColor(const QColor &color)
				 {
				    penColor = color;
				     update();
				 }
				 void RenderArea::setRotationAngle(int degrees)
				 {
				     rotationAngle = degrees;
				     update();
				 }
				 void RenderArea::paintEvent(QPaintEvent *)
				 {
				     QPainter painter(this);
				     painter.setRenderHint(QPainter::Antialiasing)  
				 painter.scale(width() / 100.0, height() / 100.0);
				     painter.translate(50.0, 50.0);
				     painter.rotate(-rotationAngle);
				     painter.translate(-50.0, -50.0);
							

相关资源