最终效果:
//用Hexagon类铺贴窗口的一部分区域(至少使用8个六边形)。
#include"../实践/GUI/Simple_window.h"
#include"GUI/Graph.h"
//声明Hexagon类。
struct Hexagon:Closed_polyline
{
Hexagon(Point pp, int mm);
private:
Point p;
int m;
};
//---------------------------------------------------------------------------------------------
//定义Hexagon类。
Hexagon::Hexagon(Point pp, int mm) :p(pp), m(mm)
{
Point p1(Point(p.x - m / 2, p.y - sqrt(3) / 2 * m));
Point p2(Point(p.x + m / 2, p.y - sqrt(3) / 2 * m));
Point p3(Point(p.x + m, p.y));
Point p4(Point(p.x + m / 2, p.y + sqrt(3) / 2 * m));
Point p5(Point(p.x - m / 2, p.y + sqrt(3) / 2 * m));
Point p6(Point(p.x - m, p.y));
add(p1);
add(p2);
add(p3);
add(p4);
add(p5);
add(p6);
}
//----------------------------------------------------------------------------------------------
int main()
try
{
using namespace Graph_lib;
//创建一个1000x800大小的Simple_window。
Simple_window win(Point(100,100), 1000,800 , "My_Window");
//------------------------------------------------------------------------------------------
//绘制8个正六边形
Hexagon p1(Point(350,229), 100);
p1.set_fill_color(0);
p1.set_color(Color::red);
p1.set_style(Line_style(Line_style::solid, 1));
win.attach(p1);
Hexagon p2(Point(500,143.5), 100);
p2.set_fill_color(0);
p2.set_color(Color::red);
p2.set_style(Line_style(Line_style::solid, 1));
win.attach(p2);
Hexagon p3(Point(650,229), 100);
p3.set_fill_color(0);
p3.set_color(Color::red);
p3.set_style(Line_style(Line_style::solid, 1));
win.attach(p3);
Hexagon p4(Point(500,314.5), 100);
p4.set_fill_color(0);
p4.set_color(Color::red);
p4.set_style(Line_style(Line_style::solid, 1));
win.attach(p4);
Hexagon p5(Point(500,485.5), 100);
p5.set_fill_color(0);
p5.set_color(Color::red);
p5.set_style(Line_style(Line_style::solid, 1));
win.attach(p5);
Hexagon p6(Point(650,571), 100);
p6.set_fill_color(0);
p6.set_color(Color::red);
p6.set_style(Line_style(Line_style::solid, 1));
win.attach(p6);
Hexagon p7(Point(500,656.5), 100);
p7.set_fill_color(0);
p7.set_color(Color::red);
p7.set_style(Line_style(Line_style::solid, 1));
win.attach(p7);
Hexagon p8(Point(350,571), 100);
p8.set_fill_color(0);
p8.set_color(Color::red);
p8.set_style(Line_style(Line_style::solid, 1));
win.attach(p8);
//------------------------------------------------------------------------------------------
//将控制权交给显示引擎,使GUI系统在屏幕上显示一个对象,并等待用户按下窗口中的“Next”,以便执行下面的程序。
win.wait_for_button();
//------------------------------------------------------------------------------------------
}
catch (exception& e) {
cerr << "error: " << e.what() << '\n';
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
return 2;
};
//---------------------------------------------------------------------------------------------