2012-04-12 10 views
1

を使用して、イメージボタンのアイコンの色を実行時にグレースケールに変更します。現在、まだ初期段階にあるWPFを使用してerpアプリケーションを開発しています。C#コード

特定の子ウィンドウインスタンスのC#コードを使用して、実行時に.pngまたは.jpgアイコンの色をグレースケールに変更する方法を知る必要があります。

たとえば、ウィンドウ操作の編集操作では、画像の保存ボタンを無効にしてグレースケールにする必要があります。

非常に助けてください、 ありがとうございます。

答えて

5

Iを階調に画像を変換するために、この拡張メソッドを使用する:

public static Image MakeGrayscale(this Image original) 
{ 
    Image newBitmap = new Bitmap(original.Width, original.Height); 
    Graphics g = Graphics.FromImage(newBitmap); 
    ColorMatrix colorMatrix = new ColorMatrix(
     new float[][] 
     { 
      new float[] {0.299f, 0.299f, 0.299f, 0, 0}, 
      new float[] {0.587f, 0.587f, 0.587f, 0, 0}, 
      new float[] {.114f, .114f, .114f, 0, 0}, 
      new float[] {0, 0, 0, 1, 0}, 
      new float[] {0, 0, 0, 0, 1} 
     }); 

    ImageAttributes attributes = new ImageAttributes(); 
    attributes.SetColorMatrix(colorMatrix); 
    g.DrawImage(
     original, 
     new Rectangle(0, 0, original.Width, original.Height), 
     0, 0, original.Width, original.Height, 
     GraphicsUnit.Pixel, attributes); 

    g.Dispose(); 
    return newBitmap; 
}