该功能即SuperMap Desktop中的同类文本风格:
string strDatasetName = "";
soSelection pSoSelection = axSuperMapCtrl.selection;
soDataset pSoDataset = pSoSelection.Dataset as soDataset;
if (pSoDataset != null)
{
strDatasetName = pSoDataset.Name;
}
/// 得到所在图层的对象
string strDataSourceName = pSoDataset.DataSourceAlias;
soRecordset pSoRecordset = pSoSelection.ToRecordset(false);
if (pSoRecordset == null || pSoRecordset.RecordCount == 0)
return;
/// 显示文本样式对话框
pSoRecordset.MoveFirst();
soGeoText pSoGeoText = pSoRecordset.GetGeometry() as soGeoText;
soTextStyle pSoTextStyle = pSoGeoText.TextStyle;
// bApplyFlag 记录对话框行为,应用还是取消设置
bool bApplyFlag = axSuperMapCtrl.ShowTextStylePicker(pSoTextStyle);
if (bApplyFlag)
{
DialogResult dlgResult = MessageBox.Show(this, "应用与全部要素?", "标注风格",
MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
/// 单一更新
if (dlgResult == DialogResult.No)
{
pSoRecordset.MoveFirst();
pSoGeoText = pSoRecordset.GetGeometry() as soGeoText;
pSoGeoText.TextStyle = pSoTextStyle;
// 编辑并进行更新
pSoRecordset.Edit();
pSoRecordset.SetGeometry(pSoGeoText as soGeometry);
pSoRecordset.Update();
}
else if (dlgResult == DialogResult.Yes)
{
/// 对该图层所有对象应用同样风格
soDatasetVector pSoDatasetVector = pSoDataset as soDatasetVector;
pSoRecordset = pSoDatasetVector.Query("", true, null, "");
pSoRecordset.MoveFirst();
for (int i = 1; i <= pSoRecordset.RecordCount; i++)
{
pSoGeoText = pSoRecordset.GetGeometry() as soGeoText;
pSoGeoText.TextStyle = pSoTextStyle;
// 编辑并进行更新
pSoRecordset.Edit();
pSoRecordset.SetGeometry(pSoGeoText as soGeometry);
pSoRecordset.Update();
// 记录后移
pSoRecordset.MoveNext();
}
Marshal.ReleaseComObject(pSoDatasetVector); pSoDatasetVector = null;
}
// 刷新地图
axSuperMapCtrl.Refresh();
}
Marshal.ReleaseComObject(pSoGeoText); pSoGeoText = null;
Marshal.ReleaseComObject(pSoTextStyle); pSoTextStyle = null;
Marshal.ReleaseComObject(pSoRecordset); pSoRecordset = null;
Marshal.ReleaseComObject(pSoDataset); pSoDataset = null;
Marshal.ReleaseComObject(pSoSelection); pSoSelection = null;