Страница: 1 |
Страница: 1 |
Вопрос: Разложение цвета по составляющим
Добавлено: 26.12.06 15:20
Автор вопроса: Skywalker | Web-сайт:
имеется картинка, требуется получить 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, поэтому может отличаться)
Попробуй так:
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-сайт:
Профиль | | #4
Добавлено: 26.12.06 17:30
благодарю, щас все замечательно. не учел такого расклада думал, что color возвращает только название системных цветов.
Номер ответа: 5
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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 не предлагать!