diff --git a/NameCreater/NameCreater.vcxproj b/NameCreater/NameCreater.vcxproj
index 412cf7c..0a2dcc9 100644
--- a/NameCreater/NameCreater.vcxproj
+++ b/NameCreater/NameCreater.vcxproj
@@ -35,6 +35,7 @@
Application
v143
+ NotSet
Application
@@ -43,6 +44,7 @@
Application
v143
+ NotSet
diff --git a/NameCreater/customlogo.cpp b/NameCreater/customlogo.cpp
index 0ea066f..f2f6227 100644
--- a/NameCreater/customlogo.cpp
+++ b/NameCreater/customlogo.cpp
@@ -12,6 +12,14 @@
#include
+#define DEMO_BG_PATH ":/NameCreater/resource/custom_logo/bg_1.jpg"
+
+#define KEY_DEMO_BG_ITEM 10
+#define KEY_WORD_ITEM 99
+#define KEY_WORD_ITEM_X_POS 100
+#define KEY_WORD_ITEM_Y_POS 101
+#define DEMO_WORD_UNICODE "\u92ea\u96dc\u5152"
+
static QPointF BG_POS_START = QPointF(159, 61);
static QPointF BG_POS_ROT_START = QPointF(900, 2094);
static qreal BG_WIDTH_OFFSET = 320;
@@ -25,6 +33,7 @@ static QColor FONT_COLOR = QColor(0, 0, 0);
static QColorDialog* s_colorDialog = nullptr;
+
class QGraphicsCloneTextItem : public QGraphicsTextItem {
public:
QGraphicsCloneTextItem(const QString& text, QGraphicsItem* parent = nullptr) :
@@ -52,11 +61,16 @@ CustomLogo::CustomLogo(QFont* font, QDialog* parent) :
fontColor(QColor(0, 0, 0))
{
ui->setupUi(this);
-
+ x_adjust_offset = y_adjust_offset = 0;
+ onSliderValueChanged(0);
connect(ui->load_bg_btn, &QPushButton::released, this, &CustomLogo::onClickedBtn);
connect(ui->load_list_btn, &QPushButton::released, this, &CustomLogo::onClickedBtn);
connect(ui->color_btn, &QPushButton::released, this, &CustomLogo::onClickedBtn);
+ connect(ui->reset_adjust_btn, &QPushButton::released, this, &CustomLogo::onClickedBtn);
+
+ connect(ui->x_adjust_slider, &QSlider::valueChanged, this, &CustomLogo::onSliderValueChanged);
+ connect(ui->y_adjust_slider, &QSlider::valueChanged, this, &CustomLogo::onSliderValueChanged);
QFont _f(*font);
@@ -70,6 +84,15 @@ CustomLogo::CustomLogo(QFont* font, QDialog* parent) :
ui->color_btn->setFont(_f);
ui->double_checkbox->setFont(_f);
+
+
+
+ demo_scene.setBackgroundBrush(QBrush(QColor(255, 255, 255)));
+ ui->demo_graphicsView->setScene(&demo_scene);
+
+ QPixmap def_demo_bg(DEMO_BG_PATH);
+ createDemoGraphicItemBG(def_demo_bg);
+
}
CustomLogo::~CustomLogo()
@@ -86,7 +109,8 @@ void CustomLogo::loadBGFromFile()
else {
QPixmap pix;
if (pix.loadFromData(fileContent, "JPG")) {
- ui->display_label->setPixmap(pix);
+ //ui->display_label->setPixmap(pix);
+ createDemoGraphicItemBG(pix);
}
else {
qDebug() << "Data content not image format";
@@ -97,6 +121,70 @@ void CustomLogo::loadBGFromFile()
QFileDialog::getOpenFileContent("Image (*.jpg)", fileContentReady);
}
+void CustomLogo::createDemoGraphicItemBG(const QPixmap& img)
+{
+ demo_scene.clear();
+
+ QGraphicsPixmapItem* name_bgItem = new QGraphicsPixmapItem(img);
+ name_bgItem->setData(KEY_DEMO_BG_ITEM, KEY_DEMO_BG_ITEM);
+ name_bgItem->setPos(10, 10);
+ demo_scene.addItem(name_bgItem);
+
+ QGraphicsRectItem* name_rectItem = new QGraphicsRectItem(QRectF(0, 0, name_bgItem->boundingRect().width(), name_bgItem->boundingRect().height() / 2), name_bgItem);
+ name_rectItem->setPen(QPen(QColor(0, 0, 0, 255)));
+
+ QString name = QString(DEMO_WORD_UNICODE);
+
+ int name_len = name.length();
+ QPointF pos = NAME_OFFSET_START;
+ qreal y_offset = 0;
+ if (name_len == 2) {
+ pos.setY(pos.y() + 65.0);
+ y_offset = 55;
+ }
+
+ for (int k = 0; k < name_len; k++) {
+ QGraphicsCloneTextItem* textItem = new QGraphicsCloneTextItem(name.mid(k, 1), name_rectItem);
+ textItem->setFont(*customFont);
+ textItem->setDefaultTextColor(fontColor);
+
+ qreal _posX = (name_rectItem->boundingRect().width() / 2 - textItem->boundingRect().width() / 2);
+ qreal _posY = (pos.y()) + k * (EACH_WORD_OFFSET + y_offset);
+ qDebug() << "Name num:" << QString::number(k) << "PosY:" << QString::number(_posY);
+ textItem->setData(KEY_WORD_ITEM, QVariant(KEY_WORD_ITEM));
+ textItem->setData(KEY_WORD_ITEM_X_POS, QVariant(_posX));
+ textItem->setData(KEY_WORD_ITEM_Y_POS, QVariant(_posY));
+ textItem->setPos(_posX+x_adjust_offset, _posY+y_adjust_offset);
+
+ }
+
+
+ if (ui->double_checkbox->isChecked()) {
+ QGraphicsRectItem* name_reverse_rectItem = new QGraphicsRectItem(name_rectItem->rect(), name_bgItem);
+ name_reverse_rectItem->setPen(QPen(QColor(0, 0, 0, 0)));
+ name_reverse_rectItem->setPos(name_bgItem->boundingRect().width(), name_bgItem->boundingRect().height());
+ foreach(auto item, name_rectItem->childItems()) {
+ QGraphicsCloneTextItem* _ti = ((QGraphicsCloneTextItem*)item)->clone(name_reverse_rectItem);
+ _ti->setData(KEY_WORD_ITEM, QVariant(KEY_WORD_ITEM));
+ }
+ name_reverse_rectItem->setRotation(180);
+ qDebug() << "name_rect item child count:" << name_rectItem->childItems().size();
+ }
+
+}
+
+void CustomLogo::updateDemoGraphicItemBG() {
+ foreach(QGraphicsItem * item, demo_scene.items()) {
+ QVariant v = item->data(KEY_WORD_ITEM);
+ if (v.toInt() == KEY_WORD_ITEM) {
+ ((QGraphicsTextItem*)item)->setDefaultTextColor(fontColor);
+ qreal _ori_x = item->data(KEY_WORD_ITEM_X_POS).toReal();
+ qreal _ori_y = item->data(KEY_WORD_ITEM_Y_POS).toReal();
+ item->setPos(_ori_x + x_adjust_offset, _ori_y + y_adjust_offset);
+ }
+ }
+}
+
void CustomLogo::loadListFromFile()
{
auto fileContentReady = [this](const QString& fileName, const QByteArray& fileContent) {
@@ -144,7 +232,17 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QPixmap _bg = ui->display_label->pixmap()->copy();
#else
- QPixmap _bg = ui->display_label->pixmap().copy();
+ QPixmap _bg; //= ui->display_label->pixmap().copy();
+
+ foreach(QGraphicsItem * item, demo_scene.items()) {
+ QVariant v = item->data(KEY_DEMO_BG_ITEM);
+ if (v.toInt() == KEY_DEMO_BG_ITEM) {
+ _bg = ((QGraphicsPixmapItem*)item)->pixmap().copy();
+ break;
+ }
+
+ }
+
#endif //
@@ -182,7 +280,7 @@ void CustomLogo::gerneraImageFromList(const QList& nameList, Name_Ty
qreal _posX = name_rectItem->boundingRect().width() / 2 - textItem->boundingRect().width() / 2;
qreal _posY = pos.y() + k * (EACH_WORD_OFFSET + y_offset);
qDebug() << "Name num:" << QString::number(k) << "PosY:" << QString::number(_posY);
- textItem->setPos(_posX, _posY);
+ textItem->setPos(_posX+x_adjust_offset, _posY+y_adjust_offset);
}
@@ -275,6 +373,26 @@ void CustomLogo::onColorSelected(const QColor& color)
QPalette palette = ui->color_label->palette();
palette.setColor(QPalette::WindowText, fontColor);
ui->color_label->setPalette(palette);
+
+ updateDemoGraphicItemBG();
+}
+
+void CustomLogo::onSliderValueChanged(int value)
+{
+ auto slider = QObject::sender();
+
+ if (slider == ui->x_adjust_slider) {
+ x_adjust_offset = value;
+ }
+ else if (slider == ui->y_adjust_slider) {
+ y_adjust_offset = value;
+
+ }
+
+ ui->x_adjust_label->setText(QString("X: %1").arg(QString::number(x_adjust_offset)));
+ ui->y_adjust_label->setText(QString("Y: %1").arg(QString::number(y_adjust_offset)));
+
+ updateDemoGraphicItemBG();
}
@@ -296,6 +414,10 @@ void CustomLogo::onClickedBtn() {
s_colorDialog->open();
}
+ else if (sender == ui->reset_adjust_btn) {
+ ui->x_adjust_slider->setValue(0);
+ ui->y_adjust_slider->setValue(0);
+ }
}
diff --git a/NameCreater/customlogo.h b/NameCreater/customlogo.h
index be1a43a..208580a 100644
--- a/NameCreater/customlogo.h
+++ b/NameCreater/customlogo.h
@@ -21,8 +21,13 @@ private:
Ui::CustomLogo *ui;
QFont* customFont;
QColor fontColor;
+ QGraphicsScene demo_scene;
+
+ qreal x_adjust_offset, y_adjust_offset;
void loadBGFromFile();
+ void createDemoGraphicItemBG(const QPixmap& img);
+ void updateDemoGraphicItemBG();
void loadListFromFile();
void gerneraImageFromList(const QList& nameList, Name_Type_e type);
@@ -32,6 +37,7 @@ protected:
private Q_SLOTS:
void onClickedBtn();
void onColorSelected(const QColor& color);
+ void onSliderValueChanged(int value);
diff --git a/NameCreater/customlogo.ui b/NameCreater/customlogo.ui
index 1beb264..5ab6714 100644
--- a/NameCreater/customlogo.ui
+++ b/NameCreater/customlogo.ui
@@ -7,31 +7,12 @@
0
0
545
- 1741
+ 653
Form
-
-
-
- 20
- 10
- 293
- 1715
-
-
-
-
-
-
- :/NameCreater/resource/custom_logo/bg_1.jpg
-
-
- false
-
-
@@ -112,6 +93,104 @@
+
+
+
+ 10
+ 50
+ 311
+ 561
+
+
+
+
+
+
+ 330
+ 410
+ 201
+ 141
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+ -
+
+
+ 水平
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+ false
+
+
+
+ -
+
+
+ -100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ 垂直
+
+
+
+ -
+
+
+ X
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Y
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Reset
+
+
+
+
+
diff --git a/NameCreater/def.h b/NameCreater/def.h
index d77af5e..c15871f 100644
--- a/NameCreater/def.h
+++ b/NameCreater/def.h
@@ -1,7 +1,7 @@
#ifndef DEF_H
#define DEF_H
-#define VERSION "v2.9.2"
+#define VERSION "v2.10.0"
#endif // DEF_H