用Hexagon类铺贴窗口的一部分区域(至少使用8个六边形)。

最终效果: 

 

//用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;
};
//---------------------------------------------------------------------------------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值