[英]Qt Drawing pixel by pixel zoomed
我試圖在互聯網上找到一些幫助,我有一些代碼要測試,但是沒有一個像我想要的那樣工作。
我會用Qt逐像素繪制一些東西。
我嘗試在QLabel
使用受保護事件mousePressEvent
的QImage
起作用,但是像素太小而看不到它們。
我嘗試縮放Image,效果更好,但是位置X,Y現在與像素位置不同,或者它們與像素位置不同步。
如果有人有想法重新創建此圖片,請在此處截圖我要執行的操作...
如果我可以通過Qt完全做到這一點,那么我將節省大量時間,只需一個基本像素一個像素地繪制一個示例,就可以將Paint,Black和White格式放大到800%。
謝謝。
這是針對特定大小進行硬編碼的解決方案-只需在pixmap和draw小部件之間實現相對坐標映射即可完成設置。
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0) : QWidget(parent), pressed(0) {
color = Qt::black;
pixmap = new QPixmap("h:/small.png");
resize(240, 240);
}
~Widget() { if (pixmap) delete pixmap; }
protected:
void paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.drawPixmap(0, 0, pixmap->scaled(240, 240));
painter.drawPixmap(0, 0, *pixmap);
}
void mousePressEvent(QMouseEvent *e) {
if (e->button() == Qt::RightButton)
color = color == Qt::black ? Qt::white : Qt::black;
else {
pressed = 1;
draw(e);
}
}
void mouseReleaseEvent(QMouseEvent *) { pressed = 0; }
void mouseMoveEvent(QMouseEvent *e) { draw(e); }
private:
void draw(QMouseEvent *e) {
if (pressed) {
QPainter painter(pixmap);
painter.setPen(color);
int x = e->pos().x() / 12;
int y = e->pos().y() / 12;
painter.drawPoint(x, y);
repaint();
}
}
QColor color;
QPixmap *pixmap;
bool pressed;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.