谁帮我做下这几道编程题 用C++ 感激不尽!

2.1设计一个基本图形属性类,要求:类名:CDrawAttr;具备:色彩(DWORD)、笔宽(float)和属性位(WORD);笔宽的设置和取值函数;若属性位的最高位表示... 2.1 设计一个基本图形属性类,要求:
类名:CDrawAttr;
具备:色彩(DWORD)、笔宽(float)和属性位(WORD);
笔宽的设置和取值函数;
若属性位的最高位表示该对象处于删除状态,那么设置和去除这个状态应如何表示(提示:0X8000, 0X7FFF);
包含一个输出的纯虚函数void Draw(CDC* pDC)。
2.2 从CDrawAttr继承,设计一个直线和一个矩形类,要求:
设计各自的你认为必要的,基本的数据成员和成员函数;
实现各自的输出函数(Draw)(可用伪代码实现)。
设计一段程序,生成上题所定义的直线和矩形图形对象,并通过一个for循环表示C++的多态特性。
请把代码粘上,好的一定给分!谢谢!
展开
 我来答
loboho
2012-11-13 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:403万
展开全部
class CDrawAttr
{
protected:
DWORD m_color;
float m_penWidth;
WORD m_wFlag;
public:
void Remove() { m_wFlag |= 0x8000; } // 设置最高位
void Restore() { m_wFlag &= 0x7FFF; }; // 清除最高位
virtual void Draw(CDC* pDC) = 0;
virtual ~CDrawAttr() { }
}

class CLine : public CDrawAttr
{
POINT m_pt1, m_pt2;
public:
CLine(POINT p1, POINT p2, DWORD dwColor, float nPenWidth)
{
m_pt1 = p1;
m_pt2 = p2;
m_color = dwColor;

m_penWidth = nPenWidth;
}
virtual void Draw(CDC* pDC)

{

pDC->DrawLine(m_pt1, m_pt2, m_color, m_penWidth ); // 伪代码
}

}

class CRectangle : public CDrawAttr
{
POINT m_ptLeftTop, m_ptRightDown;
public:
CLine(POINT p1, POINT p2, DWORD dwColor, float nPenWidth)
{
m_ptLeftTop = p1;
m_ptRightDown = p2;
m_color = dwColor;
m_penWidth = nPenWidth;
}
virtual void Draw(CDC* pDC)
{
pDC->DrawRect(m_ptLeftTop , m_ptRightDown , m_color, m_penWidth ); // 伪代码
}
}

void main()
{
CLine line(...);

CRectangle rect(...);

CDrawAttr* pDrawObject[] = { &line, &rect };

for(int i = 0; i < countof(pDrawObject); i++)

{

pDrawObject[i]->Draw();

}
}
我要改名叫嘟嘟
2012-11-12 · TA获得超过290个赞
知道答主
回答量:64
采纳率:0%
帮助的人:35.1万
展开全部
据说只需要百度下你就能够找到相似的代码!
追问
搜不到,帮帮。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式