设计个绘制不同图形的类 能改变图形颜色和线宽 C++
时间: 2023-11-27 21:49:34 浏览: 81
可以设计一个名为 "Shape" 的基类,包含虚函数 "draw()",表示绘制图形的操作。然后派生出不同形状的子类,如 "Circle"、"Rectangle"、"Triangle" 等,每个子类实现自己的 "draw()" 函数,以实现不同类型图形的绘制。此外,可以在基类中定义成员变量表示颜色和线宽,并提供相应的函数用于修改这些属性。下面是一个简单的示例代码:
```
#include <iostream>
using namespace std;
class Shape {
public:
virtual void draw() = 0;
void setColor(string color) { m_color = color; }
void setLineWidth(int width) { m_lineWidth = width; }
protected:
string m_color;
int m_lineWidth;
};
class Circle : public Shape {
public:
Circle(int x, int y, int r) : m_x(x), m_y(y), m_r(r) {}
void draw() {
cout << "Draw a circle at (" << m_x << ", " << m_y << "), radius = " << m_r << endl;
cout << "Color: " << m_color << ", line width: " << m_lineWidth << endl;
}
private:
int m_x, m_y, m_r;
};
class Rectangle : public Shape {
public:
Rectangle(int x, int y, int w, int h) : m_x(x), m_y(y), m_w(w), m_h(h) {}
void draw() {
cout << "Draw a rectangle at (" << m_x << ", " << m_y << "), width = " << m_w << ", height = " << m_h << endl;
cout << "Color: " << m_color << ", line width: " << m_lineWidth << endl;
}
private:
int m_x, m_y, m_w, m_h;
};
int main() {
Shape* shapes[2];
shapes[0] = new Circle(100, 100, 50);
shapes[1] = new Rectangle(200, 200, 100, 50);
for (int i = 0; i < 2; i++) {
shapes[i]->setColor("red");
shapes[i]->setLineWidth(2);
shapes[i]->draw();
}
return 0;
}
```
这里定义了基类 "Shape" 和两个子类 "Circle" 和 "Rectangle",分别表示圆和矩形。每个子类都实现了自己的 "draw()" 函数,以实现不同类型图形的绘制。在主函数中,首先定义了两个指向 "Shape" 对象的指针,并分别指向一个圆和一个矩形。然后通过调用基类中的 "setColor()" 和 "setLineWidth()" 函数,修改了颜色和线宽属性。最后调用 "draw()" 函数,分别绘制了圆和矩形,并输出了颜色和线宽信息。
阅读全文