Qt之用小方块来绘制圆形

要用一些小方块来绘制圆形,可以使用QPainter的drawRect()方法来绘制一系列相邻的小矩形,以模拟一个圆形。下面是一个简单的例子:

void MyWidget::paintEvent(QPaintEvent* event)
{
    // 创建QPainter对象,并指定绘制的QPaintDevice(通常为QWidget)
    QPainter painter(this);
  
    // 设置每个小方块的大小和填充颜色
    QSizeF blockSize(5.0, 5.0);
    QColor blockColor(Qt::red);
  
    // 绘制小方块来模拟圆形
    QRectF boundsRect = event->rect();
    QPointF center = boundsRect.center();
    qreal radius = qMin(boundsRect.width(), boundsRect.height()) / 2;
    qreal x = center.x() - radius;
    qreal y = center.y() - radius;
    for (int i = x; i < x + 2 * radius; i += blockSize.width()) {
        for (int j = y; j < y + 2 * radius; j += blockSize.height()) {
            if ((i - center.x()) * (i - center.x()) + (j - center.y()) * (j - center.y()) <= radius * radius) {
                QRectF rect(i, j, blockSize.width(), blockSize.height());
                painter.fillRect(rect, blockColor);
            }
        }
    }
}

在这个例子中,我们首先定义了每个小方块的大小和填充颜色。然后,我们计算出圆形的半径和中心点,以及需要绘制的方块的左上角坐标。接下来,我们遍历所有可能的方块位置,并检查它是否在圆形内部。如果在圆形内部,我们将使用fillRect()方法绘制这个小矩形。

当然,这种方式模拟的圆形肯定不如使用drawEllipse()方法绘制圆形来直接方便,但它可以用于一些特定的场景,比如绘制有色随机噪点、类似马赛克的视觉效果等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值