qt绘制一个矩形绘制一个三角形
时间: 2023-08-19 11:43:56 浏览: 373
在Qt中绘制三角形可以使用QPainter类的drawPolygon函数,具体操作如下:
1. 创建一个QPainter对象
2. 设置绘制三角形的画笔和画刷,可以使用setPen和setBrush函数
3. 创建一个QPolygon对象,用于存储三角形的三个顶点的坐标
4. 调用QPainter的drawPolygon函数,传入QPolygon对象即可完成三角形的绘制。
下面是一个简单的示例代码:
```cpp
#include <QPainter>
#include <QWidget>
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPen pen(Qt::black, 2, Qt::SolidLine);
painter.setPen(pen);
QBrush brush(Qt::blue, Qt::SolidPattern);
painter.setBrush(brush);
// 绘制矩形
painter.drawRect(50, 50, 100, 100);
// 绘制三角形
QPolygon polygon;
polygon << QPoint(150, 150) << QPoint(200, 200) << QPoint(250, 150);
painter.drawPolygon(polygon);
}
```
以上代码会在窗口中绘制一个黑色的矩形和一个蓝色的三角形。
相关问题
使用C++ qt opengl 绘制一个矩形
以下是使用C++ Qt OpenGL绘制一个矩形的代码示例:
```cpp
#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Core>
class QQQOpenGLWidget : public QOpenGLWidget, QOpenGLFunctions_3_3_Core {
Q_OBJECT
public:
explicit QQQOpenGLWidget(QWidget *parent = nullptr);
protected:
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
};
QQQOpenGLWidget::QQQOpenGLWidget(QWidget *parent) : QOpenGLWidget(parent) {}
void QQQOpenGLWidget::initializeGL() {
initializeOpenGLFunctions();
}
void QQQOpenGLWidget::resizeGL(int w, int h) {}
void QQQOpenGLWidget::paintGL() {
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 绘制矩形
glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f); // 设置颜色为红色
glVertex2f(-0.5f, -0.5f); // 左下角顶点
glVertex2f(0.5f, -0.5f); // 右下角顶点
glVertex2f(0.5f, 0.5f); // 右上角顶点
glVertex2f(-0.5f, 0.5f); // 左上角顶点
glEnd();
}
```
相关问题--:
1. 如何在Qt中使用OpenGL?
2. 如何绘制其他形状,例如三角形或圆形?
3. 如何在OpenGL中设置不同的颜色?
qt通过给定的矩形大小,绘制正多边形,通过指定边数,来绘制,是几边行
在Qt中,你可以使用`QPainter`和`QPolygon`类来绘制正多边形。首先,你需要确定你要绘制的边数(例如,3代表三角形,4代表四边形,以此类推)。然后,计算每个顶点的位置,通常可以通过正多边形内角公式和已知边长来获得。假设你知道半径(即矩形的一条对角线长度除以根号下边数),可以按照以下步骤操作:
1. 创建一个`QPolygon`对象并设置初始顶点(通常是正方形的中心)。
2. 根据边数,计算剩余顶点的坐标。对于正n边形,每个顶点相对于中心的角度是 `(n - 2) * 180 / n` 度。从第一个顶点开始,每次旋转这个角度并加上初始半径即可得到下一个顶点。
3. 使用`QPainter`的`drawPolygon()`函数绘制多边形。
这是一个基本示例:
```cpp
void drawRegularPolygon(int sides, qreal rectWidth, qreal rectHeight, QPainter& painter)
{
qreal radius = rectWidth / (sqrt(sides) * 2); // 计算半径
QPointF center(rectWidth / 2, rectHeight / 2);
QPolygonF polygon;
polygon.append(center);
qreal angle = 2*M_PI / sides; // 每个顶点的角度
for (int i = 1; i < sides; ++i)
{
QPointF vertex = QPointF(center.x() + cos(angle * i) * radius,
center.y() + sin(angle * i) * radius);
polygon.append(vertex);
}
painter.drawPolygon(polygon);
}
```
阅读全文