/// <summary>
/// 勾选:显示国家基本比例尺地形图分幅
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
comboBox4.Items.Clear();
// 支持如下比例尺
comboBox4.Items.Add("1:100万");
comboBox4.Items.Add("1:50万");
comboBox4.Items.Add("1:25万");
comboBox4.Items.Add("1:10万");
comboBox4.Items.Add("1:5万");
comboBox4.Items.Add("1:2.5万");
comboBox4.Items.Add("1:1万");
}
}
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
GenerageSheetLinesByScaleAndDrawIt(comboBox4.SelectedItem.ToString(), checkBox2.Checked);
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
GenerageSheetLinesByScaleAndDrawIt(comboBox4.SelectedItem.ToString(), checkBox2.Checked);
}
/// <summary>
/// 根据选择的比例尺生成地形分幅并进行绘制
/// </summary>
/// <param name="scaleStr"></param>
/// <param name="dispName"></param>
private void GenerageSheetLinesByScaleAndDrawIt(String scaleStr, bool dispName = true)
{
_graphicLayer.Clear();
int scale;
switch (scaleStr)
{
case "1:100万":
scale = 100;
break;
case "1:50万":
scale = 50;
break;
case "1:25万":
scale = 25;
break;
case "1:10万":
scale = 10;
break;
case "1:5万":
scale = 5;
break;
case "1:2.5万":
scale = 3;
break;
case "1:1万":
scale = 1;
break;
default:
scale = 100;
break;
}
MapRoute polygon = null;
foreach (var m in _graphicLayer.Polygons)
{
polygon = m;
break;
}
var sheetLineTiles = new List<SheetLineTile>();
// 根据比例尺和当前地图视野生成地形分幅
var rect = MapControl.ViewArea;
sheetLineTiles = SheetLineUtil.GetChinaSheetLineTilesByBounds(scale, rect);
//// 也可根据比例尺和绘制的图形生成地形分幅(polygon为绘制的图形)
//sheetLineTiles = SheetLineUtil.GetChinaSheetLineTilesByPolygon(scale, polygon);
// 绘制图幅
foreach (var tile in sheetLineTiles)
{
var finalRect = new AZMapRectangle(tile.TopLeft, tile.RightBottom)
{
IsHitTestVisible = true,
Name = tile.Name,
Stroke = new Pen(Color.FromArgb(200, Color.Red)) // 边线颜色
{
Width = 1, // 粗细
DashStyle = DashStyle.Solid // 样式(这里使用 实心线 的样式)
},
Fill = new SolidBrush(Color.FromArgb(20, Color.Red)), // 填充色
};
// 显示图幅编号
if (dispName)
{
finalRect.Title = tile.Name;
finalRect.TitleColor = Brushes.Blue;
finalRect.TitleFont = new Font("Segoe UI", 14, FontStyle.Bold, GraphicsUnit.Pixel);
}
_graphicLayer.Polygons.Add(finalRect);
}
}
|