qt在图片中心画一个标尺,每100像素显示为2厘米
时间: 2024-05-11 19:16:44 浏览: 7
好的,您可以使用 Qt 中的 QPainter 类来在图片上画标尺。以下是一个简单的示例代码:
```cpp
QPixmap image(":/path/to/image.png"); // 加载图片
int width = image.width();
int height = image.height();
QPainter painter(&image); // 构造 QPainter,绘制到 image 上
painter.setPen(QPen(Qt::white, 2)); // 设置画笔颜色和宽度
painter.drawLine(QPointF(width / 2, height / 4), QPointF(width / 2, height * 3 / 4)); // 绘制竖直线
painter.drawLine(QPointF(width / 4, height / 2), QPointF(width * 3 / 4, height / 2)); // 绘制水平线
int pixelsPerCm = 50; // 每厘米对应的像素数 (100 像素 / 2 厘米 = 50 像素 / 厘米)
int cmPerTick = 2; // 每个小刻度代表的厘米数
for (int i = 0; i <= width / pixelsPerCm; i += cmPerTick) {
int x = i * pixelsPerCm;
painter.drawLine(QPointF(x, height / 2 - 5), QPointF(x, height / 2 + 5)); // 绘制小竖线
painter.drawText(QRect(x - 20, height / 2 + 10, 40, 20), Qt::AlignHCenter, QString::number(i / 2)); // 绘制刻度数字
}
for (int i = 0; i <= height / pixelsPerCm; i += cmPerTick) {
int y = i * pixelsPerCm;
painter.drawLine(QPointF(width / 2 - 5, y), QPointF(width / 2 + 5, y)); // 绘制小横线
painter.drawText(QRect(width / 2 + 10, y - 10, 40, 20), Qt::AlignVCenter, QString::number(i / 2)); // 绘制刻度数字
}
// 显示图片
QLabel label;
label.setPixmap(image);
label.show();
```
该示例代码在图片中心绘制了一个 2 厘米宽的标尺,每个小刻度代表 1 厘米。可以通过调整 `pixelsPerCm` 和 `cmPerTick` 的值来改变比例和刻度密度。绘制的标尺和刻度数字的颜色和字体也可以通过 QPainter 的其他方法进行设置。