C++设计类CLine,该类有属性:组成线的点数、点坐标数组、线的颜色、线的宽度,有函数设置和获取颜色、线宽,获取线上的点数,添加点到线上,在线上删除点,修改点坐标、获取点坐标
时间: 2023-05-19 12:05:46 浏览: 83
CLine类的设计如下:
```c++
class CLine {
private:
int pointCount; // 组成线的点数
int* pointCoords; // 点坐标数组
int color; // 线的颜色
int width; // 线的宽度
public:
// 构造函数
CLine(int count, int* coords, int c, int w) {
pointCount = count;
pointCoords = new int[count * 2];
for (int i = 0; i < count * 2; i++) {
pointCoords[i] = coords[i];
}
color = c;
width = w;
}
// 设置颜色
void setColor(int c) {
color = c;
}
// 获取颜色
int getColor() {
return color;
}
// 设置线宽
void setWidth(int w) {
width = w;
}
// 获取线宽
int getWidth() {
return width;
}
// 获取点数
int getPointCount() {
return pointCount;
}
// 添加点
void addPoint(int x, int y) {
int* newCoords = new int[(pointCount + 1) * 2];
for (int i = 0; i < pointCount * 2; i++) {
newCoords[i] = pointCoords[i];
}
newCoords[pointCount * 2] = x;
newCoords[pointCount * 2 + 1] = y;
delete[] pointCoords;
pointCoords = newCoords;
pointCount++;
}
// 删除点
void removePoint(int index) {
if (index < 0 || index >= pointCount) {
return;
}
int* newCoords = new int[(pointCount - 1) * 2];
for (int i = 0; i < index * 2; i++) {
newCoords[i] = pointCoords[i];
}
for (int i = index * 2 + 2; i < pointCount * 2; i++) {
newCoords[i - 2] = pointCoords[i];
}
delete[] pointCoords;
pointCoords = newCoords;
pointCount--;
}
// 修改点坐标
void setPointCoords(int index, int x, int y) {
if (index < 0 || index >= pointCount) {
return;
}
pointCoords[index * 2] = x;
pointCoords[index * 2 + 1] = y;
}
// 获取点坐标
void getPointCoords(int index, int& x, int& y) {
if (index < 0 || index >= pointCount) {
return;
}
x = pointCoords[index * 2];
y = pointCoords[index * 2 + 1];
}
};
```
使用示例:
```c++
int coords[] = {0, 0, 100, 100, 200, 200};
CLine line(3, coords, 0xFF0000, 2);
line.setColor(0x00FF00);
line.setWidth(4);
line.addPoint(300, 300);
line.removePoint(1);
line.setPointCoords(1, 150, 150);
int x, y;
line.getPointCoords(1, x, y);
```
这段代码定义了一个CLine类,包含了组成线的点数、点坐标数组、线的颜色、线的宽度等属性,以及设置和获取颜色、线宽,获取线上的点数,添加点到线上,在线上删除点,修改点坐标、获取点坐标等函数。使用示例中创建了一个包含3个点的线,设置了颜色和宽度,添加了一个点,删除了第2个点,修改了第2个点的坐标,获取了第2个点的坐标。