MFC信息块法创建地图符号数据结构
时间: 2023-07-07 11:31:52 浏览: 105
MFC中信息块法用于创建地图符号数据结构,可以使用CObList类来存储符号信息块。具体步骤如下:
1. 创建一个符号信息块类,例如CSymbolBlock。
2. 在符号信息块类中定义符号属性,例如颜色、形状等。
3. 创建一个CObList对象,用于存储符号信息块。
4. 在CView中的OnDraw函数中遍历CObList对象,根据每个符号信息块的属性绘制符号。
以下是一个简单的示例代码:
```
// CSymbolBlock.h
class CSymbolBlock : public CObject
{
public:
CSymbolBlock(COLORREF color, int shape);
virtual ~CSymbolBlock();
COLORREF m_color;
int m_shape;
};
// CSymbolBlock.cpp
CSymbolBlock::CSymbolBlock(COLORREF color, int shape)
{
m_color = color;
m_shape = shape;
}
CSymbolBlock::~CSymbolBlock()
{
}
// CMyView.cpp
void CMyView::OnDraw(CDC* pDC)
{
// 创建CObList对象
CObList listSymbols;
// 添加符号信息块
listSymbols.AddTail(new CSymbolBlock(RGB(255, 0, 0), 1));
listSymbols.AddTail(new CSymbolBlock(RGB(0, 255, 0), 2));
listSymbols.AddTail(new CSymbolBlock(RGB(0, 0, 255), 3));
// 遍历符号信息块,绘制符号
POSITION pos = listSymbols.GetHeadPosition();
while (pos != NULL)
{
CSymbolBlock* pSymbol = (CSymbolBlock*)listSymbols.GetNext(pos);
// 设置画笔属性
CPen pen(PS_SOLID, 1, pSymbol->m_color);
pDC->SelectObject(&pen);
// 绘制符号
switch (pSymbol->m_shape)
{
case 1:
pDC->Rectangle(10, 10, 20, 20);
break;
case 2:
pDC->Ellipse(30, 10, 40, 20);
break;
case 3:
pDC->RoundRect(50, 10, 60, 20, 5, 5);
break;
default:
break;
}
}
// 释放符号信息块
pos = listSymbols.GetHeadPosition();
while (pos != NULL)
{
delete listSymbols.GetNext(pos);
}
listSymbols.RemoveAll();
}
```
在上述示例代码中,CSymbolBlock类表示符号信息块,包含了颜色和形状两个属性。CObList类用于存储符号信息块。在OnDraw函数中,首先创建CObList对象并添加符号信息块,然后遍历CObList对象,根据每个符号信息块的属性绘制符号。最后释放符号信息块。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)