線などのベクター プリミティブを描画するための Windows Forms C# アプリケーションを作成しました。楕円など。選択した図形の境界線の幅を変更する方法があります。これは方法です:
public void SetBorderWidth(int border)
{
if (border < 0)
return;
if ((SelectedItem != null) && (SelectedItem.isGroup == false))
{
SelectedItem.BorderWidth = border;
}
if ((SelectedItem != null) && (SelectedItem.isGroup == true))
{
ChangeCascadeBorderWidth(SelectedItem, border);
}
foreach (Shape figure in ObjectsDrawn)
{
if (figure.Selected)
{
ObjectsDrawn[ObjectsDrawn.IndexOf(figure)].BorderWidth = border;
}
if (figure.isGroup)
{
ChangeCascadeBorderWidth(figure, border);
}
}
}
メソッドを呼び出す人:
private void ChangeCascadeBorderWidth(Shape group, int width)
{
foreach (Shape item in ((Grouping)group).GroupedElements)
{
if (item.isGroup == true)
{
ChangeCascadeBorderWidth(item, width);
}
else
{
item.BorderWidth = width;
}
}
}
図形が複数の図形のグループである場合。しかし、これは動作が遅すぎます。1 つまたは複数の図形を選択した場合でも、10 ~ 15 秒待たなければならないことがあります。境界線の幅を変更します。なぜそんなに遅いのですか?