QT 绘制矩形,椭圆等。

#ifndef MYRECT_H
#define MYRECT_H


#include <QtGui/QWidget>


class myRect : public QWidget
{
    Q_OBJECT
    
public:
    myRect(QWidget *parent = 0);
    ~myRect();
private :
    void paintEvent(QPaintEvent *);//重载了基类的事件。
    QPainter *painter;


};


#endif // MYRECT_H
-----------------------------------------
#include "myrect.h"
#include <QPainter>
#include <QPoint>
myRect::myRect(QWidget *parent)
    : QWidget(parent)
{
 setGeometry(100,100,400,400);
}


myRect::~myRect()
{
    
}
void myRect::paintEvent(QPaintEvent *)//重载了基类的事件。
{
    painter = new QPainter;
    painter->begin(this);
    painter->setPen(QPen(Qt::blue,4,Qt::DashLine)); //设置画笔形式 参数:颜色,线的类型,
    //painter->setBrush(QBrush(Qt::red,Qt::SolidPattern)); //设置画刷形式
    // painter->drawRect(20,20,160,160);//画 矩形
   // painter->drawEllipse(20,20,210,160);  //画椭圆 //   第1,2个参数分别表示圆/椭圆距左上角的像素数。第3,4个参数表示圆/椭圆的宽度和高度。更加确切地表述,这个圆或椭圆是在矩形中,这个矩形的左上角的顶点在坐标轴中的位置为(20,20),这个圆或椭圆的中心为这个矩形的中心,以下的都相似!!!


    //painter->drawRoundRect(20,20,210,160,50,50);//绘制圆角矩形    最后两个参数决定角的圆度。它可以为0到99之间的任意值(99代表最圆)。
    // painter->drawPie(20,20,210,160,0,500);//绘制扇形图  前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),500为扇形所展开的角度(单位也为1/16度)。
    //painter->drawChord(20,20,210,160,500,1000);//绘制弦


     painter->drawArc(20,20,210,160,500,1000);//绘制圆弧


    painter->end();
}
-----------------------------------------
#include <QtGui/QApplication>
#include "myrect.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    myRect w;
    w.show();
    
    return a.exec();
}































Qt中,要使用QPainter和相关的图形元素绘制一条折线形成椭圆形的效果,可以按照以下步骤操作: 1. **创建QGraphicsView和QPainter**: 首先,你需要在一个QGraphicsView上画图,这将作为绘图容器。然后创建一个QPainter实例,以便在视图上绘画。 ```cpp QGraphicsView view; QPainter painter(view.scene()); ``` 2. **设置椭圆路径**: 使用`drawEllipse()`函数画出一个完整的椭圆,但这不会直接生成折线。我们可以使用更复杂的路径技巧来模拟椭圆边缘。这里你可以通过一系列的小半径圆形或矩形片段来逼近椭圆。 ```cpp // 指定椭圆中心点、宽和高 QPointF center(x, y); int majorRadius = ellipseWidth / 2; int minorRadius = ellipseHeight / 2; for (int i = -majorRadius; i <= majorRadius; ++i) { for (int j = -minorRadius; j <= minorRadius; ++j) { // 计算每个小矩形的位置 QPointF point(center + QPointF(i, j)); // 创建一个小矩形绘制 QRectF rect(point.x() - minorRadius, point.y() - minorRadius, minorRadius * 2, minorRadius * 2); painter.drawRect(rect); } } ``` 3. **绘制折线部分**: 如果你想让折线更精确地描绘椭圆轮廓,可以使用`drawPath()`函数,并自定义一个包含折线段的简单形状,如`QPolygonF`。 4. **保存并显示图像**: 绘制完成后,别忘了保存或更新视图内容。 请注意,上述示例简化了过程,实际应用中可能会需要调整算法以达到更平滑的曲线效果。此外,如果你想要动画或实时绘制,那么还需要考虑性能优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值