// Technique from http://www.vb-helper.com/howto_2008_uac_shield.html private Bitmap GetUacShieldIcon() { const int width = 50; const int height = 50; const int margin = 4; Bitmap shieldImage; Button button = new Button() { Text = " ", Size = new Size(width, height), FlatStyle = FlatStyle.System }; button.SetShieldIcon(true); Bitmap buttonImage = new Bitmap(width, height); button.Refresh(); button.DrawToBitmap(buttonImage, new Rectangle(0, 0, width, height)); int minX = width; int maxX = 0; int minY = width; int maxY = 0; for (int y = margin; y < height - margin; y++) { var targetColor = buttonImage.GetPixel(margin, y); for (int x = margin; x < width - margin; x++) { if (buttonImage.GetPixel(x, y).Equals(targetColor)) { buttonImage.SetPixel(x, y, Color.Transparent); } else { if (minY > y) minY = y; if (minX > x) minX = x; if (maxY < y) maxY = y; if (maxX < x) maxX = x; } } } int shieldWidth = maxX - minX + 1; int shieldHeight = maxY - minY + 1; shieldImage = new Bitmap(shieldWidth, shieldHeight); using (Graphics g = Graphics.FromImage(shieldImage)) g.DrawImage(buttonImage, 0, 0, new Rectangle(minX, minY, shieldWidth, shieldHeight), GraphicsUnit.Pixel); buttonImage.Dispose(); return shieldImage; }