最终效果:
//在矩形周围绘制一个1/4英寸宽的红色框,矩形的高度为屏幕高度的3/4,宽度为屏幕宽度的2/3。
#include"../实践/GUI/Simple_window.h"
#include"GUI/Graph.h"
int main()
try
{
using namespace Graph_lib;
//建立窗口。
Point tl(100, 100);
Simple_window win(tl, 1000,800 , "My Window");
//--------------------------------------------------------------------------------------
//绘制矩形,矩形的高度为屏幕高度的3/4,宽度为屏幕宽度的2/3。(注意:点坐标、长、宽用函数表示,可以使矩形大小自动适应窗口大小的变化。
Graph_lib::Rectangle r(Point(win.x_max() * 1 / 8, win.y_max() * 1/ 6), win.x_max() * 3 / 4, win.y_max() * 2 / 3);
r.set_color(Color::black);
r.set_style(Line_style(Line_style::solid, 1));
win.attach(r);
//-------------------------------------------------------------------------------------
// 在矩形周围绘制一个1/4英寸宽的红色框。(1/4英寸为75个像素)
Graph_lib::Rectangle out_red(Point(win.x_max() * 1 / 8-75, win.y_max() * 1 / 6-75), win.x_max() * 3 / 4 + 150, win.y_max() * 2 / 3 + 150);
out_red.set_color(Color::red);
out_red.set_style(Line_style(Line_style::solid, 75));
win.attach(out_red);
//--------------------------------------------------------------------------------------
//补全红色框(注意因为“截断”而产生的“1”的问题)。
Graph_lib::Rectangle r1(Point(win.x_max() * 1 / 8 - 75-75/2, win.y_max() * 1 / 6 - 75-75/2), 75 / 2, 75 / 2);
r1.set_color(Color::red);
r1.set_fill_color(Color::red);
win.attach(r1);
Graph_lib::Rectangle r2(Point(win.x_max() * 1 / 8 - 75-75/2, win.y_max() * 1 / 6 - 75+ win.y_max() * 2 / 3 + 150-1), 75 / 2, 75 / 2+1);
r2.set_color(Color::red);
r2.set_fill_color(Color::red);
win.attach(r2);
Graph_lib::Rectangle r3(Point(win.x_max() * 1 / 8 - 75 + win.x_max() * 3 / 4 + 150-1, win.y_max() * 1 / 6 - 75 - 75 / 2), 75 / 2+1, 75 / 2);
r3.set_color(Color::red);
r3.set_fill_color(Color::red);
win.attach(r3);
Graph_lib::Rectangle r4(Point(win.x_max() * 1 / 8 - 75 + win.x_max() * 3 / 4 + 150-1, win.y_max() * 1 / 6 - 75 + win.y_max() * 2 / 3 + 150-1), 75 / 2+1, 75 / 2+1);
r4.set_color(Color::red);
r4.set_fill_color(Color::red);
win.attach(r4);
// -------------------------------------------------------------------------------------
//将控制权交给显示引擎,使GUI系统在屏幕上显示一个对象,并等待用户按下窗口中的“Next”,以便执行下面的程序。
win.wait_for_button();
//--------------------------------------------------------------------------------------
}
catch (exception& e) {
cerr << "error: " << e.what() << '\n';
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
return 2;
};
//------------------------------------------------------------------------------------------