Example #1
0
void graph2_1::paintEvent(QPaintEvent *)
{
    /***********�����α߿���������**************/
    QPainter *painter=new QPainter(this);
    painter->setRenderHint(QPainter::Antialiasing,true);
    painter->drawRect(10,10,380,230);
    QPoint beginPoint(50,200);
    QPoint xEndPoint(xEndX,xEndY);
    QPoint yEndPoint(yEndX,yEndY);
    painter->drawLine(beginPoint,xEndPoint);
    painter->drawLine(beginPoint,yEndPoint);

    //*****************����������ͷ*********/
    int xOffset=13;
    brush.setColor(Qt::black);
    brush.setStyle(Qt::SolidPattern);
    painter->setBrush(brush);

    QPoint xarrowRightPoint(xEndX+xOffset,xEndY);
    QPoint xarrowTopPoint(xEndX,-xOffset*tan(PI/6)+xEndY);
    QPoint xarrowBotPoint(xEndX,xOffset*tan(PI/6)+xEndY);
    static const QPoint xarrowPoints[3] = {
    xarrowRightPoint,xarrowTopPoint,xarrowBotPoint,
    };
    painter->drawPolygon(xarrowPoints,3);

    QPoint yarrowTopPoint(yEndX,yEndY-xOffset);
    QPoint yarrowRightPoint(xOffset*tan(PI/6)+yEndX,yEndY);
    QPoint yarrowLeftPoint(-xOffset*tan(PI/6)+yEndX,yEndY);
    static const QPoint yarrowPoints[3] = {
    yarrowTopPoint,yarrowLeftPoint,yarrowRightPoint,
    };
    painter->drawPolygon(yarrowPoints,3);
    painter->setBrush(Qt::NoBrush);

    /************��ע������**********/
    painter->drawText(xEndX,xEndY+20,tr("HZ"));
    //painter->rotate(270);
    painter->drawText(yEndY,yEndX+20,tr("dB"));
    //painter->rotate(90);


    /*************************/
    QVector<qreal> dashes;
    qreal space = 3;
    dashes << 5 << space << 5 << space;
    pen.setDashPattern(dashes);
    pen.setWidth(2);
    pen.setColor(Qt::blue);
    painter->setPen(pen);

    QPoint point5(90,200);
    QPoint point6(100,155);
    QPoint point7(250,110);
    QPoint point8(300,80);

    painter->drawPath(drawBezierCurve(point5,point6));
    painter->drawPath(drawBezierCurve(point6,point7));
    painter->drawPath(drawBezierCurve(point7,point8));
}
Example #2
0
void ellipse::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen;
    painter.translate(600, 300);
    int xEndX=590;
    int xEndY=0;
    int yEndX=0;
    int yEndY=-280;
    int xOffset=13;
    int yOffset=13;
    QPoint beginPoint(-590,0);
    QPoint xEndPoint(xEndX,xEndY);
    QPoint yEndPoint(yEndX,yEndY);
    painter.drawLine(beginPoint,xEndPoint);
    QPoint beginPoint2(0,290);
    painter.drawLine(beginPoint2,yEndPoint);


    for(int i=-550;i<600;i+=50)
    {
        beginPoint.setX(i);
        beginPoint.setY(0);
        beginPoint2.setX(i);
        beginPoint2.setY(-5);
        painter.drawLine(beginPoint2,beginPoint);
        char x[10];
        sprintf(x,"%d",i);
        painter.drawText(i+1,15,x);
    }
    for(int i=-250;i<300;i+=50)
    {
        beginPoint.setX(0);
        beginPoint.setY(0-i);
        beginPoint2.setX(5);
        beginPoint2.setY(0-i);
        painter.drawLine(beginPoint2,beginPoint);
        char x[10];
        sprintf(x,"%d",0-i);
        if(i!=0)
       { painter.drawText(-25,i,x);}
    }

    QPoint xArrowsLeftPoint(xEndX,xEndY);
    QPoint xArrowsTopPoint(xEndX-xOffset,-xOffset*tan(PI/6));
    QPoint xArrowsBotPoint(xEndX-xOffset,xOffset*tan(PI/6));
    static const QPoint xArrowsPoints[3] = {
        xArrowsLeftPoint,xArrowsTopPoint,xArrowsBotPoint,
    };
    painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    painter.drawPolygon(xArrowsPoints,3);
    painter.drawText(xEndX-20,xEndY-20,tr("X轴"));

    QPoint yArrowsBotPoint(yEndX,yEndY-yOffset);
    QPoint yArrowsRightPoint(yOffset*tan(PI/6),yEndY);
    QPoint yArrowsLeftPoint(-yOffset*tan(PI/6),yEndY);
    static const QPoint yArrowsPoints[3] = {
       yArrowsBotPoint,yArrowsRightPoint,yArrowsLeftPoint,
    };
    painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
    painter.drawPolygon(yArrowsPoints,3);
    painter.drawText(yEndX+20,yEndY+20,tr("Y轴"));

        painter.setPen(Qt::blue);
        paintEvent2(0,shortr);
        painter.drawPoints(pointf1, 4);


            int ry=shortr;
            int rx=longr;
            long p0 = ry*ry-rx*rx*ry+0.25*rx*rx;
            long x0 =0,y0 = ry;
            while(ry*ry*x0<rx*rx*y0)
            {
                x0++;
                if(p0<0)
                {
                    p0 = p0 +2*ry*ry*x0+ry*ry;
                }
                else
                {
                    y0--;
                    p0 = p0+2*ry*ry*x0-2*rx*rx*y0+ry*ry;
                }
                paintEvent2(x0,y0);
                painter.drawPoints(pointf1, 4);
            }
            p0 = ry*ry*(x0+0.5)*(x0+0.5)+rx*rx*(y0-1)*(y0-1)-rx*rx*ry*ry;
            while(y0>0)
            {
                y0--;
                if(p0>0)
                {
                    p0 = p0 -2*rx*rx*y0+rx*rx;
                }
                else
                {
                    x0++;
                    p0 = p0 +2*ry*ry*x0-2*rx*rx*y0+rx*rx;
                }
                paintEvent2(x0,y0);
                painter.drawPoints(pointf1, 4);
            }

  }