網遊常在頭像面板顯示監視對象的 Buff 圖標及持續時間、效果。新增 QXIcon 圖標控件:
<Canvas x:Name="Icon">
<Image x:Name="Body">
<Image.ToolTip>
<TextBlock x:Name="Details" />
</Image.ToolTip>
</Image>
</Canvas>
主體為圖片,加 ToolTip 顯示描述。通用頭像面板加入水平 StackPanel 作為 Buff 容器:
<StackPanel x:Name="ExtraPanel" Orientation="Horizontal" />
選 StackPanel 兼容 Silverlight,動態增減子控件完美,僅需 Add/Remove。
for (int i = 0; i < obj.ExtraTime.Count(); i++)
{
QXIcon icon = ObjectRoleFace.ExtraPanel.FindName(string.Format("Extra{0}", i)) as QXIcon;
if (obj.ExtraTime[i] > 0)
{
XElement ExtraItem = Super.GetTreeNode(Super.SystemXElement["ExtraItems"], "Item", "Value", i.ToString());
if (icon == null)
{
icon = new QXIcon() { Width = 16, Height = 16, BodySource = Super.getImage(ExtraItem.Attribute("Src").Value) };
ObjectRoleFace.ExtraPanel.RegisterName(string.Format("Extra{0}", i), icon);
ObjectRoleFace.ExtraPanel.Children.Add(icon);
}
icon.Tip = string.Format("{0}持續:{1}秒", ExtraItem.Attribute("Name").Value, obj.ExtraTime[i]);
}
else
{
if (icon != null)
{
ObjectRoleFace.ExtraPanel.UnregisterName(string.Format("Extra{0}", i));
ObjectRoleFace.ExtraPanel.Children.Remove(icon);
icon = null;
}
}
}
下節將講解魔法特效裝飾。