private static Image CreateDisabledImage(Image image, Color transparentColor)
{
// vytvoření bitmapy z obrázku
Bitmap disabledBitmap = new Bitmap(image);
// pro každý bod v bitmapě
for (int x = 0; x < disabledBitmap.Width; x++)
{
for (int y = 0; y < disabledBitmap.Height; y++)
{
// barva bodu
Color oldColor = disabledBitmap.GetPixel(x, y);
//pokud se jedná o transparentní barvu, ignoruj bod
if (oldColor != transparentColor)
{
// zprůměruj hodnoty složek barvy bodu
int averageColor = (oldColor.R + oldColor.G + oldColor.B) / 3;
// vytvoř šedou barvu a nastav barvu bodu v bitmapě
Color newColor = Color.FromArgb(averageColor, averageColor, averageColor);
disabledBitmap.SetPixel(x, y, newColor);
}
}
}
// vrať obrázek převedený do odstínů šedé
return (Image)disabledBitmap;
}
private static Image CreatePressedImage(Image image, Color transparentColor)
{
// vytvoření bitmapy z obrázku
Bitmap pressedBitmap = new Bitmap(image);
// pro každý bod v bitmapě
for (int x = 0; x < pressedBitmap.Width; x++)
{
for (int y = 0; y < pressedBitmap.Height; y++)
{
// barva bodu
Color oldColor = pressedBitmap.GetPixel(x, y);
//pokud se jedná o transparentní barvu, ignoruj bod
if (oldColor != transparentColor)
{
// ztmav hodnoty složek barvy bodu
int newR = (oldColor.R - 20) < 0 ? 0 : (oldColor.R - 20);
int newG = (oldColor.G - 20) < 0 ? 0 : (oldColor.G - 20);
int newB = (oldColor.B - 20) < 0 ? 0 : (oldColor.B - 20);
// vytvoř novou barvu a nastav barvu bodu v bitmapě
Color newColor = Color.FromArgb(newR, newG, newB);
pressedBitmap.SetPixel(x, y, newColor);
}
}
}
// vrať obrázek převedený do odstínů šedé
return (Image)pressedBitmap;
}