用任何定义的点绘制矩形

Draw Rectangles with any defined point

你好,我是工科学生,目前正在从事 C++ 项目。我需要用这个函数绘制几个矩形,但我只能通过定义相同的左上角来绘制它们。我想通过定义 recangle 的 9 个点之一来绘制矩形(中间中心,中间左侧,中间右侧,右上角,左上角,底部中心......)。 你能帮帮我吗?

void Svgfile::addRectangle(int x1,int y1,int width,int height, std::string color)
{
          m_ostrm << "<polygon points=\" "
            << x1 << "," << y1 << " "
            << x1+width << "," << y1 << " "
            << x1+width << "," << y1+height << " "
            << x1 << "," << y1+height << " "
            << x1 << "," << y1
            << "\" style=\"fill:" << color
            << "\" />\n";
}

将所有有问题的点转换为左上角的点并使用相同的代码。对于每个点类型的转换,您可以使用开关、if/else 或函数调用。例如如果是中点或者右上角,你可以这样定义它们

void Svgfile::addRectangleTopRight(int x1,int y1,int width,int height, std::string color)
{
   addRectangle(x1-width, x2, width, height, color) ;       
}

void Svgfile::addRectangleMid(int x1,int y1,int width,int height, std::string color)
{
   addRectangle(x1-width/2, x2-height/2, width, height, color) ;       
}