Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Разложение цвета по составляющим Добавлено: 26.12.06 15:20  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
имеется картинка, требуется получить RGB каждого пикселя. Делаю так:


Dim BitMap As System.Drawing.Bitmap
BitMap = System.Drawing.Bitmap.FromFile(filename)
Dim str As String = ""
Dim q As ColorValue
For i = 0 To MapSize - 1
            For j = 0 To MapSize - 1
                q = ColorValue.FromColor(BitMap.GetPixel(i, j))
                str = str + " " + q.Red.ToString + " " + q.Green.ToString + " " + q.Blue.ToString + "                "
            Next
Next
IO.File.WriteAllText("c:\matrix.txt", str)


ну и получается фигня какая-то, например RGB первого пикселя в текстовике это:
0,3960785 0,3960785 0,3960785
3 дробных числа. Что такое, как так?!

Аналогично получается, если делать:

q = ColorValue.FromArgb(BitMap.GetPixel(i, j).ToArgb)


Что здесь неправильно? подскажите

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #1 Добавлено: 26.12.06 15:58
Незнай-незнай... (у меня 2005, поэтому может отличаться)
Попробуй так:
Dim q As Color
q = BitMap.GetPixel(100, 100)
MsgBox(q.ToString)

Там выдаются 4 значения ARGB. A - Это альфа какая-то... Можно строку обрезать и в файл вывести RGB.

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 26.12.06 16:01
А для чего тебе понадобился ColorValue???
BitMap.GetPixel(i, j) возвращает структуру Color, а она уже имеет в своем составе все составляющие цвета.. A,R,G,B вот их и юзай..

Ответить

Номер ответа: 3
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #3 Добавлено: 26.12.06 17:29
2EROS
А че за Аlpha в ARGB?

Ответить

Номер ответа: 4
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 26.12.06 17:30
благодарю, щас все замечательно. не учел такого расклада думал, что color возвращает только название системных цветов.

Ответить

Номер ответа: 5
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #5
Добавлено: 26.12.06 17:32
2avdey, alpha ето прозрачность. т.е. если альфа=0 то точка полностью не прозрачна, если 255 полностью прозрачна (или наоборот насчет 0 и 255 точно не знаю)

Ответить

Номер ответа: 6
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #6 Добавлено: 26.12.06 17:37
Скорее всего наоборот, 255 - не прозрачна, а 0 - прозрачна...

Ответить

Номер ответа: 7
Автор ответа:
 Djon



Вопросов: 61
Ответов: 471
 Web-сайт: www.vk-book.ru
 Профиль | | #7
Добавлено: 26.12.06 19:01
Dim R As Byte, G As Byte, B As Byte
Dim Color&
Color = pic1.Point(x, y)
R = Color And &HFF
G = (Color \ 256) And &HFF
B = (Color \ 65536) And &HFF

Можно и вот так...

Ответить

Номер ответа: 8
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 26.12.06 19:49
0-прозрачный пиксел, 255 - не прозрачный

Ответить

Номер ответа: 9
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #9 Добавлено: 26.12.06 21:03
2 Djon: для vb6 сгодица :)

Ответить

Номер ответа: 10
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #10 Добавлено: 27.12.06 11:08
Надо вешать объявление: Код на VB6 не предлагать!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам