效果:文章來源:http://www.zghlxwxcb.cn/news/detail-830933.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-830933.html
int resolutionWidth = m_resolution.width();
int resolutionHeight = m_resolution.height();
QPixmap pixmap(resolutionWidth, resolutionHeight);
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setPen(QPen(Qt::red, 2)); // 設(shè)置畫筆顏色為紅色,寬度為2
// 繪制垂直線
painter.drawLine(resolutionWidth / 2, 0, resolutionWidth / 2, resolutionHeight);
// 繪制水平線
painter.drawLine(0, resolutionHeight / 2, resolutionWidth, resolutionHeight / 2);
int centerX = resolutionWidth / 2;
int centerY = resolutionHeight / 2;
// 在十字中間添加值
QString centerText = "Center";
QRectF centerRect(centerX + 20, centerY , 40, 20);
painter.drawText(centerRect, Qt::AlignCenter, centerText);
// // 繪制量尺
int rulerLength = m_resolution.width(); // 量尺長度
int tickSpacing = 10; // 刻度間距
// 繪制水平中心線上的量尺
int rulerStartXHorizontal = centerX - rulerLength / 2; // 水平量尺起始位置X坐標(biāo)
int rulerStartYHorizontal = centerY; // 水平量尺起始位置Y坐標(biāo)
for (int i = 0; i <= rulerLength; i += tickSpacing) {
int tickHeight = (i % (tickSpacing * 5) == 0) ? 20 : 10; // 長刻度的高度為20,短刻度的高度為10
painter.drawLine(rulerStartXHorizontal + i , rulerStartYHorizontal , rulerStartXHorizontal + i, rulerStartYHorizontal - tickHeight ); // 繪制刻度線
}
// 繪制垂直中心線上的量尺
int rulerStartXVertical = centerX; // 垂直量尺起始位置X坐標(biāo)
int rulerStartYVertical = centerY + rulerLength / 2; // 垂直量尺起始位置Y坐標(biāo)
for (int i = 0; i <= rulerLength; i += tickSpacing) {
int tickWidth = (i % (tickSpacing * 5) == 0) ? 20 : 10; // 長刻度的寬度為20,短刻度的寬度為10
painter.drawLine(rulerStartXVertical, rulerStartYVertical - i, rulerStartXVertical - tickWidth, rulerStartYVertical - i); // 繪制刻度線
}
ui->workWidget->updatePixmap1(pixmap); // 更新 workWidget 上顯示的圖像
到了這里,關(guān)于QT實(shí)現(xiàn)十字線的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!