日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

32 Qt 之绘图之绘制一个漂亮的西瓜

發布時間:2024/3/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 32 Qt 之绘图之绘制一个漂亮的西瓜 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡筆畫

我們先簡單看看西瓜的基本組成,一步步進行拆分、組合。

繪制


效果

具體的效果如下所示,我們可以再進行更好的完善。

源碼

主要分為以下三部:

  • 繪制外圓(綠色部分)
  • 繪制內圓(紅色部分)
  • 繪制橢圓(西瓜子)

注意:繪制西瓜子的時候,由于西瓜子隨機分布在西瓜中,所以我們使用了隨機數來表示區域,并判斷西瓜子是否在內圓中(西瓜子肯定要在西瓜內O__O”…)。

void MainWindow::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);QPainterPath path;// 起始點(矩形左上角坐標)QPoint startPoint(50, 10);// 外部矩形寬度的1/2(外部圓半徑)int nOuterRadius = 150;// 內部矩形寬度的1/2(內部圓半徑)int nInnerRadius = 150;int nInnerHeightRadius = 120;// 間距int nSpacing = nOuterRadius - nInnerHeightRadius;QPointF rightPoint(startPoint.x() + nOuterRadius * 2, startPoint.y() + nOuterRadius);QRect outerRect(startPoint.x(), startPoint.y(), nOuterRadius * 2, nOuterRadius * 2);QPointF leftPoint(startPoint.x(), startPoint.y() + nInnerHeightRadius + nSpacing);QRect innerRect(startPoint.x(), startPoint.y() + nSpacing, nInnerRadius * 2, nInnerHeightRadius * 2);// 1.繪制外圓(綠色部分)path.moveTo(rightPoint);path.arcTo(outerRect, 180, 180);path.closeSubpath();painter.setPen(Qt::black);painter.setBrush(QColor(5, 150, 60));painter.drawPath(path);path = QPainterPath();// 2.繪制內圓(紅色部分)path.moveTo(leftPoint);path.arcTo(innerRect, 180, 180);path.closeSubpath();painter.setPen(Qt::black);painter.setBrush(Qt::red);painter.drawPath(path);// 3.生成橢圓(西瓜子)QPainterPath seedsPath = QPainterPath();qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));// 用來判斷橢圓范圍for (int i = innerRect.left(); i < innerRect.left() + innerRect.width(); i += 30){for(int j = innerRect.top() + nInnerHeightRadius; j < innerRect.top() + nInnerHeightRadius * 2; j += 20){// 隨機數(西瓜子隨機分布在西瓜中)int nX = qrand() % 30;int nY = qrand() % 30;// 當橢圓在內部路徑內時,添加至繪制路徑(西瓜子肯定要在西瓜內O__O"…)QRect rect(i + nX, j + nY, 6, 10);if (path.contains(rect))seedsPath.addEllipse(rect);}}painter.setPen(Qt::NoPen);painter.setBrush(Qt::black);painter.drawPath(seedsPath); }

總結

以上是生活随笔為你收集整理的32 Qt 之绘图之绘制一个漂亮的西瓜的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。