2011-11-08 5 views
0

Я работаю по настройке контрастности изображения в C#, но я получаю сообщение об ошибке говорящееSystem.Drawing.Image Не содержит определение для «GetPixel», «» LockImage

«System.Drawing .Image не содержит определение для 'GetPixel', 'LockImage»

для следующего кода.

public static Bitmap AdjustContrast(Bitmap OriginalImage, float Value) 
     { 
      Bitmap NewBitmap = new Bitmap(OriginalImage.Width, OriginalImage.Height); 
      BitmapData NewData = 
       Image.LockImage(NewBitmap); 

      BitmapData OldData = Image.LockImage(OriginalImage); 
      int NewPixelSize = Image.GetPixelSize(NewData); 
      int OldPixelSize = Image.GetPixelSize(OldData); 
      Value = (100.0f + Value)/100.0f; 
      Value *= Value; 

      for (int x = 0; x < NewBitmap.Width; ++x) 
      { 
       for (int y = 0; y < NewBitmap.Height; ++y) 
       { 
        Color Pixel = Image.GetPixel(OldData, x, y, OldPixelSize); 
        float Red = Pixel.R/255.0f; 
        float Green = Pixel.G/255.0f; 
        float Blue = Pixel.B/255.0f; 
        Red = (((Red - 0.5f) * Value) + 0.5f) * 255.0f; 
        Green = (((Green - 0.5f) * Value) + 0.5f) * 255.0f; 
        Blue = (((Blue - 0.5f) * Value) + 0.5f) * 255.0f; 
        Image.SetPixel(NewData, x, y, 
         Color.FromArgb(MathHelper.Clamp((int)Red, 255, 0), 
         MathHelper.Clamp((int)Green, 255, 0), 
         MathHelper.Clamp((int)Blue, 255, 0)), 
         NewPixelSize); 
       } 
      } 
      Image.UnlockImage(NewBitmap, NewData); 
      Image.UnlockImage(OriginalImage, OldData); 
      return NewBitmap; 
     } 

Любое предложение было бы полезно.

ответ

2

Вы получаете эту ошибку, потому что компилятор видит изображение и пытается найти методы GetPixel и LockImage в классе System.Drawing.Image. Эти методы не существуют в этом классе, поэтому вы получаете свою ошибку.

Похоже, вы получаете код от James Craig's blog, в частности this page. В нижней части его фрагмента он указывает, что некоторые из методов из его библиотеки полезности, и он конкретно называет LockImage. Если вы еще этого не сделали, загрузите свою библиотеку утилиты (есть ссылка на связанную страницу), и я думаю, вы найдете этот метод и GetPixel тоже.

Если вы используете библиотеку утилиты, не забудьте указать пространства имен для устранения ошибок в классах, найденных в библиотеке служебных программ, и в стандартных библиотеках Microsoft.

+0

Кажется, библиотека изменилась. Я использовал класс SwiftBitmap в lib – Oktay

Смежные вопросы