
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
![]() |
|
|
Всем привет!
Есть PictureBox с картинкой. Как инвертировать изображение? Заранее всем благодарен! |
Сообщ.
#2
,
|
|
|
Подскажи, что ты понимаешь под словом - инвертировать?
|
Сообщ.
#3
,
|
|
|
Инвертировать цвета (черный на белый и т.д.)
|
Сообщ.
#4
,
|
|
|
![]() ![]() public static bool Invert(Bitmap b) { // GDI+ still lies to us - the return format is BGR, NOT RGB. BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int stride = bmData.Stride; System.IntPtr Scan0 = bmData.Scan0; unsafe { byte * p = (byte *)(void *)Scan0; int nOffset = stride - b.Width*3; int nWidth = b.Width * 3; for(int y=0;y < b.Height;++y) { for(int x=0; x < nWidth; ++x ) { p[0] = (byte)(255-p[0]); ++p; } p += nOffset; } } b.UnlockBits(bmData); return true; } |
Сообщ.
#5
,
|
|
|
Или без unsafe'а
![]() ![]() Bitmap bitmap = new Bitmap(pictureBox.Image); Rectangle rect = new Rectangle(0,0,bitmap.Width,bitmap.Height); BitmapData bitmapData = bitmap.LockBits(rect,ImageLockMode.ReadWrite,PixelFormat.Format32bppRgb); try { int[] bitmapRGB = new int[bitmap.Width * bitmap.Height]; Marshal.Copy(bitmapData.Scan0, bitmapRGB, 0, bitmapRGB.Length); for (int counter = 0; counter < bitmapRGB.Length; counter++) bitmapRGB[counter] = ~bitmapRGB[counter]; Marshal.Copy(bitmapRGB,0,bitmapData.Scan0,bitmapRGB.Length); } finally { bitmap.UnlockBits(bitmapData); } pictureBox.Image = bitmap; |
![]() |
|
|
Эти алгоритмы у меня есть:
http://www.codeproject.com/cs/media/csharp...icfilters11.asp А можно без алгоритмов? На апи есть функции для копирования областей. Так же можно задать режим: XOR, AND и т.д. Есть ли похожее в CF2.0? |
Сообщ.
#7
,
|
|
|
Цитата -=CAP=- @ А можно без алгоритмов? Ничего подобного нет и в обычном фреймворке, не то, что в урезаном CF 2.0. Стали бы люди писать алгоритмы если был готовый способ, сделать это в одну строчку? ![]() ![]() |
Сообщ.
#8
,
|
|
|
![]() |