public static ContextMenu getMenu(Dictionary<string, BitmapSource> _savedImages, Primitive items, Primitive images, int iconSize)
{
BitmapSource img;
ContextMenu menu = new ContextMenu();
int itemCount = SBArray.GetItemCount(items);
Primitive itemIndices = SBArray.GetAllIndices(items);
for (int i = 1; i <= itemCount; i++)
{
string itemText = items[itemIndices[i]];
string imageName = images[itemIndices[i]];
// Add the item
MenuItem menuItem = new MenuItem();
menuItem.Header = itemText;
menuItem.Click += new RoutedEventHandler(_MenuClickEvent);
menuItem.Tag = (string)(itemIndices[i]);
// Creates the item image.
if (imageName != "")
{
if (!_savedImages.TryGetValue(imageName, out img))
{
imageName = ImageList.LoadImage(imageName);
_savedImages.TryGetValue(imageName, out img);
}
if (null != img)
{
System.Windows.Controls.Image image = new System.Windows.Controls.Image();
image.Source = img;
if (iconSize > 0)
{
Bitmap dImg = FastPixel.GetBitmap(img);
System.Drawing.Image.GetThumbnailImageAbort dummyCallback = new System.Drawing.Image.GetThumbnailImageAbort(LDWebCam.ResizeAbort);
dImg = (Bitmap)dImg.GetThumbnailImage(iconSize, iconSize, dummyCallback, IntPtr.Zero);
image.Source = FastPixel.GetBitmapImage(dImg);
}
menuItem.Icon = image;
}
}
menu.Items.Add(menuItem);
}
if (menu.Items.Count == 0) return null;
return menu;
}