Страница: 1 |
Страница: 1 |
Вопрос: GrayPicture в ImageBox
Добавлено: 23.11.06 02:11
Автор вопроса: Vladimir | ICQ: 423-156-001
Как переделать рисунок в серый чвет и показать в ImageBox? Может, кто подскажет.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 23.11.06 02:34
Вычисли среднее арифметическое из R, G и B-компонент для каждого пиксела изображения и назначь полученное число всем трем.
Номер ответа: 2
Автор ответа:
Vladimir
ICQ: 423-156-001
Вопросов: 6
Ответов: 6
Профиль | | #2
Добавлено: 23.11.06 02:38
а как это сделать не прибегая к picturebox
Номер ответа: 3
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #3
Добавлено: 23.11.06 15:41
GetPixel/SetPixel
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 23.11.06 19:26
Загружай и обрабатывай картинку в памяти
Номер ответа: 5
Автор ответа:
Vladimir
ICQ: 423-156-001
Вопросов: 6
Ответов: 6
Профиль | | #5
Добавлено: 23.11.06 21:54
у ImageBox нет дескриптора устройства hDc. Так что getPixel/SetPixel непрокатят (покрайне мере в VB6). притом что после сворачивания рисунок исчезает. А на счет того, что бы загружать картинку в память - какой клас больше подойдет для этого? у stdPicture нет метода чтобы взять один одтельный пиксел,( для разложить по составляющим RGB, нахождения среднего, и т.д.)
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 23.11.06 22:25
http://www.vbnet.ru/forum/show.aspx?id=120908
Номер ответа: 7
Автор ответа:
Vladimir
ICQ: 423-156-001
Вопросов: 6
Ответов: 6
Профиль | | #7
Добавлено: 24.11.06 21:49
Dim pic As New StdPicture
Dim pic1 As New StdPicture
Dim tmpColor As Long
appdir = App.Path
If Right(appdir, 1) <> "\" Then appdir = appdir + "\"
Set pic = LoadPicture(appdir + "1.ico"
Myhdc = CreateCompatibleDC(0&
SelectObject Myhdc, pic.Handle
Myhdc1 = CreateCompatibleDC(0&
SelectObject Myhdc1, pic1.Handle
h = pic.Height
w = pic.Width
For i = 0 To h
For j = 0 To w
tmpColor = GetPixel(Myhdc, i, j)
rgbcolor = GetRGB(tmpColor, r, g, b)
sr = CByte((r + g + b) / 3)
colorrr = RGB(sr, sr, sr)
SetPixel Myhdc1, i, j, colorrr
Next j, i
Set Image1.Picture = pic1
Все равно картинка не отображается. Где я неправильно сделал?
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 26.11.06 20:39
http://www.yandex.ru/yandsearch?rpt=rad&text=ImgProcess
у него есть класс - cPictureEx
В нем отлаженное, довольно быстрое конвертирование в Gray Scale...