函数定义:
public static void ThoroughCollisionDetection(List<BaseLabel> labels)
{}函数调用:
layCityLabel.LabelFilter = LabelCollisionDetection.ThoroughCollisionDetection;问题:
为什么这里的LabelCollisionDetection.ThoroughCollisionDetection;函数调用没有给参数也能执行
public static void ThoroughCollisionDetection(List<BaseLabel> labels)
{}函数调用:
layCityLabel.LabelFilter = LabelCollisionDetection.ThoroughCollisionDetection;问题:
为什么这里的LabelCollisionDetection.ThoroughCollisionDetection;函数调用没有给参数也能执行
解决方案 »
- winform 回车键控制button问题~~~~~~~~~~~~~~~~~~纠结纠结哇
- asp.net(c#)web 页面用activex控件 怎么写
- C#二维数组 坐标
- 添加Web引用出了问题 ,那个比较熟的告诉一声
- 两个textbox,一个输入数字,一个输出阶乘的结果,button1 click事件怎么写
- 这么喜欢竞赛,第一个编写出来的,可读性好,效率高的500分相送
- 求助!多控件刷新问题
- .Net与XML同步的问题
- 请问诸位大虾,网上有没有专门的讲Asp.net控件的书呀?
- treeView中如何更改当前选择的节点?
- 调查:大家做.net开发是用纯控件,还是纯html 加 js ?
- 求c#实现的gzip压缩算法源代码
using System.Collections.Generic;namespace SharpMap.Rendering
{
/// <summary>
/// Class defining delegate for label collision detection and static predefined methods
/// </summary>
public class LabelCollisionDetection
{
#region Delegates /// <summary>
/// Delegate method for filtering labels. Useful for performing custom collision detection on labels
/// </summary>
/// <param name="labels"></param>
/// <returns></returns>
public delegate void LabelFilterMethod(List<BaseLabel> labels); #endregion #region Label filter methods /// <summary>
/// Simple and fast label collision detection.
/// </summary>
/// <param name="labels"></param>
public static void SimpleCollisionDetection(List<BaseLabel> labels)
{
labels.Sort(); // sort labels by intersectiontests of labelbox
//remove labels that intersect other labels
for (int i = labels.Count - 1; i > 0; i--)
if (labels[i].CompareTo(labels[i - 1]) == 0)
{
if (labels[i].Priority == labels[i - 1].Priority) continue; if (labels[i].Priority > labels[i - 1].Priority)
labels.RemoveAt(i - 1);
else
labels.RemoveAt(i);
}
} /// <summary>
/// Thorough label collision detection.
/// </summary>
/// <param name="labels"></param>
public static void ThoroughCollisionDetection(List<BaseLabel> labels)
{
labels.Sort(); // sort labels by intersectiontests of labelbox
//remove labels that intersect other labels
for (int i = labels.Count - 1; i > 0; i--)
{
if (!labels[i].Show) continue;
for (int j = i - 1; j >= 0; j--)
{
if (!labels[j].Show) continue;
if (labels[i].CompareTo(labels[j]) == 0)
if (labels[i].Priority >= labels[j].Priority)
{
labels[j].Show = false;
//labels.RemoveAt(j);
//i--;
}
else
{
labels[i].Show = false;
//labels.RemoveAt(i);
//i--;
break;
}
}
}
} #endregion
}
}
class LayCityLabel
{
public delegate void A(List<int> i);
public A LabelFilter
{
get;
set;
}
} class Program
{
public static void ThoroughCollisionDetection(List<int> labels)
{
foreach (int item in labels)
{
Console.WriteLine(item);
}
}
static void Main(string[] args)
{
LayCityLabel layCityLabel = new LayCityLabel();
layCityLabel.LabelFilter = ThoroughCollisionDetection;
layCityLabel.LabelFilter(new List<int>() { 1, 2, 3, 4 });
Console.Read();
}
}