finish layout design.

This commit is contained in:
shouchih_chen 2022-02-11 06:42:33 +08:00
parent 326eee0da9
commit 9901037a68

View File

@ -6,37 +6,92 @@
#include "QGraphicsPixmapItem" #include "QGraphicsPixmapItem"
#include "QGraphicsTextItem" #include "QGraphicsTextItem"
#define BG_PATH ":/NameCreater/resource/background.jpg"
#define FONT_NAME QStringLiteral("µØ±d¶êÅé Std W8")
#define FONT_SIZE 76
static QPointF BOY_POS[] = {
QPointF(235, 400), QPointF(366, 1420),
QPointF(555, 400), QPointF(692, 1420),
QPointF(878, 400), QPointF(1014, 1420),
QPointF(1200, 400), QPointF(1337, 1420),
QPointF(1527, 400), QPointF(1663, 1420),
};
static int BOY_POS_COUNT = sizeof(BOY_POS) / sizeof(BOY_POS[0]);
static QPointF GIRL_POS[] = {
QPointF(1854, 400), QPointF(1987, 1420),
QPointF(2176, 400), QPointF(2314, 1420),
QPointF(2498, 400), QPointF(2635, 1420),
QPointF(2821, 400), QPointF(2958, 1420),
QPointF(3147, 400), QPointF(3285, 1420),
};
static int GIRL_POS_COUNT = sizeof(GIRL_POS) / sizeof(GIRL_POS[0]);
void saveToImage(const QString& filename , QGraphicsScene *scene) {
scene->clearSelection(); // Selections would also render to the file
scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents
QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene
image.fill(Qt::transparent); // Start all pixels transparent
int dpm = 300 / 0.0254; // ~300 DPI
image.setDotsPerMeterX(dpm);
image.setDotsPerMeterY(dpm);
QPainter painter(&image);
scene->render(&painter);
image.save(filename);
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv); QApplication a(argc, argv);
NameCreater w;
w.show();
QFont font(FONT_NAME, FONT_SIZE);
QColor font_color(0, 0, 0);
QGraphicsScene scene; QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene); QGraphicsView view(&scene);
QImage image(":/NameCreater/resource/background_sample.jpg"); QImage image(BG_PATH);
QGraphicsPixmapItem* bgItem = new QGraphicsPixmapItem(QPixmap::fromImage(image)); QGraphicsPixmapItem* bgItem = new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene.addItem(bgItem); scene.addItem(bgItem);
QGraphicsTextItem* textItem = new QGraphicsTextItem(QStringLiteral("\n\n")); for (int i = 0; i < BOY_POS_COUNT; i++) {
textItem->setFont(QFont(QStringLiteral("華康圓體 Std W8"),76)); QGraphicsTextItem* textItem = new QGraphicsTextItem(QStringLiteral("Ĭ\n´é\n¶£"));
textItem->setDefaultTextColor(QColor(255,0,0)); textItem->setFont(font);
textItem->setPos(235, 400); textItem->setDefaultTextColor(font_color);
scene.addItem(textItem); textItem->setPos(BOY_POS[i]);
int xscale, yscale;
xscale = yscale = (i % 2 == 1) ? -1 : 1;
textItem->setTransform(QTransform::fromScale(xscale, yscale));
scene.addItem(textItem);
}
QGraphicsTextItem* textItem1 = new QGraphicsTextItem(QStringLiteral("\n\n"));
textItem1->setFont(QFont(QStringLiteral("華康圓體 Std W8")));
textItem1->setTransform(QTransform::fromScale(1, -1));
scene.addItem(textItem1);
for (int i = 0; i < GIRL_POS_COUNT; i++) {
QGraphicsTextItem* textItem = new QGraphicsTextItem(QStringLiteral("Ĭ\n¤_\n®¦"));
textItem->setFont(font);
textItem->setDefaultTextColor(font_color);
textItem->setPos(GIRL_POS[i]);
int xscale, yscale;
xscale = yscale = (i % 2 == 1) ? -1 : 1;
textItem->setTransform(QTransform::fromScale(xscale, yscale));
scene.addItem(textItem);
}
view.show(); view.show();
saveToImage("test.jpg",&scene);
return a.exec(); return a.exec();
} }