From 35569b093d3aa797b5f274772a21d7879606c5c4 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Tue, 28 Jun 2022 11:10:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86PosPair=E7=B1=BB=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=20=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=85=AC?= =?UTF-8?q?=E4=BA=A4=E8=BD=A6=E6=98=BE=E7=A4=BA=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/BusWidget.h | 29 ++++++++++++ include/PosPair.h | 59 +++++++++++++++++++++++++ include/mainScene.h | 60 ++++--------------------- picture/bus.png | Bin 19237 -> 15557 bytes src/BusWidget.cpp | 28 ++++++++++++ src/PosPair.cpp | 92 +++++++++++++++++++++++++++++++++++++++ src/mainScene.cpp | 104 ++++++-------------------------------------- 7 files changed, 231 insertions(+), 141 deletions(-) create mode 100644 include/BusWidget.h create mode 100644 include/PosPair.h create mode 100644 src/BusWidget.cpp create mode 100644 src/PosPair.cpp diff --git a/include/BusWidget.h b/include/BusWidget.h new file mode 100644 index 0000000..69ab4cb --- /dev/null +++ b/include/BusWidget.h @@ -0,0 +1,29 @@ +// +// Created by ricardo on 2022/6/28. +// + +#ifndef AUTO_BUS_GUI_BUS_WIDGET_H +#define AUTO_BUS_GUI_BUS_WIDGET_H +#include "QGraphicsPixmapItem" +#include "QTransform" + +#include "PosPair.h" + +class BusWidget +{ +public: + QGraphicsPixmapItem *item; + + + explicit BusWidget(); + + ~BusWidget(); + + void ResetBusPos(PosPair *s); + +private: + PosPair *pos_pairs = nullptr; +}; + + +#endif //AUTO_BUS_GUI_BUS_WIDGET_H diff --git a/include/PosPair.h b/include/PosPair.h new file mode 100644 index 0000000..c135d48 --- /dev/null +++ b/include/PosPair.h @@ -0,0 +1,59 @@ +// +// Created by ricardo on 2022/6/28. +// + +#ifndef AUTO_BUS_GUI_POSPAIR_H +#define AUTO_BUS_GUI_POSPAIR_H + +/** + * 储存每个站点位置的类 + */ +class PosPair{ + +public: + /* + * 站点位置的x坐标 + */ + int pos_x; + /** + * 站点位置的y坐标 + */ + int pos_y; + + PosPair(); + /** + * 获取两个站点之间的距离 + * @param stop_number 站点的数量 + * @return 站点之间的距离 + */ + int GetStopSpaceLength(int stop_number) const; + + /** + * 加上一定的距离 + * @param length 需要加上的距离 + */ + void AddLength(int length); + + /** + * 获得该站点公交车停车的位置x坐标 + * @return + */ + int GetBusPosX() const; + + /** + * 获得该站点公交车停车位置的y坐标 + * @return + */ + int GetBusPosY() const; + +private: + const int stop_begin_x = 100; + const int stop_begin_y = 80; + const int stop_rail_width = 300; + const int stop_rail_height = 200; + const int stop_bus_distance = 30; + + int distance = 0; +}; + +#endif //AUTO_BUS_GUI_POSPAIR_H diff --git a/include/mainScene.h b/include/mainScene.h index 9c7967a..0cf1599 100644 --- a/include/mainScene.h +++ b/include/mainScene.h @@ -8,56 +8,8 @@ #include "QGraphicsScene" #include "QGraphicsPixmapItem" -/** - * 储存每个站点位置的类 - */ -class PosPair{ - -public: - /* - * 站点位置的x坐标 - */ - int pos_x; - /** - * 站点位置的y坐标 - */ - int pos_y; - - PosPair(); - /** - * 获取两个站点之间的距离 - * @param stop_number 站点的数量 - * @return 站点之间的距离 - */ - int GetStopSpaceLength(int stop_number) const; - - /** - * 加上一定的距离 - * @param length 需要加上的距离 - */ - void AddLength(int length); - - /** - * 获得该站点公交车停车的位置x坐标 - * @return - */ - int GetBusPosX() const; - - /** - * 获得该站点公交车停车位置的y坐标 - * @return - */ - int GetBusPosY() const; - -private: - const int stop_begin_x = 100; - const int stop_begin_y = 80; - const int stop_rail_width = 300; - const int stop_rail_height = 200; - const int stop_bus_distance = 20; - - int distance = 0; -}; +#include "PosPair.h" +#include "BusWidget.h" class SceneManager { @@ -82,11 +34,17 @@ private: * 显示站点的像素图对象 */ QGraphicsPixmapItem *pixmap_items; + /** * 每个站点的所在位置 */ PosPair *stop_pos_pairs; + /** + * 公交车对象 + */ + BusWidget *bus; + /** * 总共的站点数量 */ @@ -101,7 +59,7 @@ private: /** * 清除画面 */ - void ClearScene(); + void ClearStopScene(); }; #endif //AUTO_BUS_GUI_MAIN_SCENE_H diff --git a/picture/bus.png b/picture/bus.png index 91ff96678669983f690a78ef830d5c4b4bd29b67..ffed124a665c99e64c3262e82684b5b60ed2b7d1 100644 GIT binary patch literal 15557 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 diff --git a/src/BusWidget.cpp b/src/BusWidget.cpp new file mode 100644 index 0000000..75845dc --- /dev/null +++ b/src/BusWidget.cpp @@ -0,0 +1,28 @@ +// +// Created by ricardo on 2022/6/28. +// + +#include "BusWidget.h" + +BusWidget::BusWidget() +{ + item = new QGraphicsPixmapItem(QPixmap(":/picture/bus.png")); + + // 设置缩放 + double bus_scale = 0.1; + QTransform transform; + transform.scale(bus_scale, bus_scale); + item->setTransform(transform); +} + +BusWidget::~BusWidget() +{ + delete item; +} + +void BusWidget::ResetBusPos(PosPair *s) +{ + pos_pairs = s; + + item->setPos(s[0].GetBusPosX(), s[0].GetBusPosY()); +} diff --git a/src/PosPair.cpp b/src/PosPair.cpp new file mode 100644 index 0000000..f34ba30 --- /dev/null +++ b/src/PosPair.cpp @@ -0,0 +1,92 @@ +// +// Created by ricardo on 2022/6/28. +// + +#include "PosPair.h" + +PosPair::PosPair() +{ + pos_x = stop_begin_x; + pos_y = stop_begin_y; +} + +int PosPair::GetStopSpaceLength(int stop_number) const +{ + return 2 * (stop_rail_width + stop_rail_height) / stop_number; +} + +void PosPair::AddLength(int length) +{ + distance += length; + + if(distance > 2 * stop_rail_width + stop_rail_height) + { + // 站点在左轨道 + + pos_x = stop_begin_x; + pos_y = stop_begin_y + (stop_rail_width + stop_rail_height) * 2 - distance; + } + else if(distance > stop_rail_width + stop_rail_height and + distance <= 2 * stop_rail_width + stop_rail_height) + { + // 站点在下轨道 + + pos_y = stop_begin_y + stop_rail_height; + pos_x = stop_begin_x + 2 * stop_rail_width + stop_rail_height - distance; + } + else if(distance > stop_rail_width and + distance <= stop_rail_width + stop_rail_height) + { + // 站点在右轨道 + + pos_x = stop_begin_x + stop_rail_width; + pos_y = stop_begin_y + distance - stop_rail_width; + } + else + { + // 站点在上轨道 + + pos_y = stop_begin_y; + pos_x = stop_begin_x + distance; + } +} + +int PosPair::GetBusPosX() const +{ + int result; + + if(pos_x <= stop_begin_x) + { + result = stop_begin_x - stop_bus_distance; + } + else if(pos_x >= stop_begin_x + stop_rail_width) + { + result = pos_x + stop_bus_distance; + } + else + { + result = pos_x; + } + + return result; +} + +int PosPair::GetBusPosY() const +{ + int result; + + if(pos_y <= stop_begin_y) + { + result = stop_begin_y - stop_bus_distance; + } + else if(pos_y >= stop_begin_y + stop_rail_width) + { + result = pos_y + stop_bus_distance; + } + else + { + result = pos_y; + } + + return result; +} diff --git a/src/mainScene.cpp b/src/mainScene.cpp index 8ae36ef..2fa86e1 100644 --- a/src/mainScene.cpp +++ b/src/mainScene.cpp @@ -11,6 +11,7 @@ SceneManager::SceneManager() pixmap_items = nullptr; stop_pos_pairs = nullptr; rect_item = new QGraphicsRectItem; + bus = new BusWidget; // 画一个描边的矩形框 rect_item->setRect(0, 0, 595, 395); @@ -19,14 +20,20 @@ SceneManager::SceneManager() SceneManager::~SceneManager() { - ClearScene(); + // 清除站点图像 + ClearStopScene(); + + // 清除公交车图像 + scene->removeItem(bus->item); + delete bus; + delete scene; } void SceneManager::SetStopScene(int node_number) { // 先清除屏幕 - ClearScene(); + ClearStopScene(); stop_node_number = node_number; pixmap_items = new QGraphicsPixmapItem[stop_node_number]; @@ -57,9 +64,13 @@ void SceneManager::SetStopScene(int node_number) } pixmap_items[i].setPos(stop_pos_pairs[i].pos_x, stop_pos_pairs[i].pos_y); } + + // 设置公交车图像 + bus->ResetBusPos(stop_pos_pairs); + scene->addItem(bus->item); } -void SceneManager::ClearScene() +void SceneManager::ClearStopScene() { // 从画布中移除所有的站点图片 for(int i = 0; i < stop_node_number; i++) @@ -70,90 +81,3 @@ void SceneManager::ClearScene() delete []pixmap_items; delete []stop_pos_pairs; } - -PosPair::PosPair() -{ - pos_x = stop_begin_x; - pos_y = stop_begin_y; -} - -int PosPair::GetStopSpaceLength(int stop_number) const -{ - return 2 * (stop_rail_width + stop_rail_height) / stop_number; -} - -void PosPair::AddLength(int length) -{ - distance += length; - - if(distance > 2 * stop_rail_width + stop_rail_height) - { - // 站点在左轨道 - - pos_x = stop_begin_x; - pos_y = stop_begin_y + (stop_rail_width + stop_rail_height) * 2 - distance; - } - else if(distance > stop_rail_width + stop_rail_height and - distance <= 2 * stop_rail_width + stop_rail_height) - { - // 站点在下轨道 - - pos_y = stop_begin_y + stop_rail_height; - pos_x = stop_begin_x + 2 * stop_rail_width + stop_rail_height - distance; - } - else if(distance > stop_rail_width and - distance <= stop_rail_width + stop_rail_height) - { - // 站点在右轨道 - - pos_x = stop_begin_x + stop_rail_width; - pos_y = stop_begin_y + distance - stop_rail_width; - } - else - { - // 站点在上轨道 - - pos_y = stop_begin_y; - pos_x = stop_begin_x + distance; - } -} - -int PosPair::GetBusPosX() const -{ - int result; - - if(pos_x <= stop_begin_x) - { - result = stop_begin_x - stop_bus_distance; - } - else if(pos_x >= stop_begin_x + stop_rail_width) - { - result = pos_x + stop_bus_distance; - } - else - { - result = pos_x; - } - - return result; -} - -int PosPair::GetBusPosY() const -{ - int result; - - if(pos_y <= stop_begin_y) - { - result = stop_begin_y - stop_bus_distance; - } - else if(pos_y >= stop_begin_y + stop_rail_width) - { - result = pos_y + stop_bus_distance; - } - else - { - result = pos_y; - } - - return result; -}