Hesiod
Hesiod copied to clipboard
Add 2D viewer
#include <QImageReader>
class TiledImageItem : public QGraphicsItem {
public:
TiledImageItem(const QString& imagePath) : m_imagePath(imagePath) {
// Initialize reader and get image size
QImageReader reader(imagePath);
m_size = reader.size();
}
QRectF boundingRect() const override {
return QRectF(0, 0, m_size.width(), m_size.height());
}
void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*) override {
// Get visible region in scene coordinates
QRectF visibleRect = painter->transform().inverted().mapRect(painter->viewport());
// Load and draw the visible portion
QImageReader reader(m_imagePath);
reader.setClipRect(visibleRect.toRect());
QImage image = reader.read();
painter->drawImage(visibleRect.topLeft(), image);
}
private:
QString m_imagePath;
QSize m_size;
};
// Usage in main():
QGraphicsScene scene;
TiledImageItem* item = new TiledImageItem("path/to/large_image.jpg");
scene.addItem(item);
scene.setSceneRect(item->boundingRect());
CustomGraphicsView view;
view.setScene(&scene);
view.show();