Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Базовое рисование |
Автор: PandaRus 13.12.2007, 20:41 |
Сейчас кое-как справился с примером програмки по книжке VC++. Программа представляет собой Виндоуз-приложение, где можно рисовать квадратики-кружки разных цветов. Мне желательно написать программу, где будет на листе заранее нарисована сетка, и я буду разукрашивать квадратики сетки в разные цвета. После чего цвет каждого квадрата должен перевестись в какое-то число и присвоится переменной. В идеале вижу процесс рисования как создание пиктограмм на кнопках панелей: размер кисти имеет размер ячейки или больши и при перемещении мыши перескакивает с ячеки на ячейку... Но в это в идеале. Для начала я хотел бы узнать -какие есть функции для преобразования цвета в число -я нарисовал стационарную сетку, как по щелчку мыши на отрезке сетки, менять цвет отрезка. Да, и есть ли спецальные программы для создания приложений для рисования? тогда было-бы наверно проще? |
Автор: DigitSphinx 13.12.2007, 21:01 | ||||
ты с делфи перешел? 1-цвет это и есть число 2-азы рисования МФСи :
почитай про
|
Автор: JackYF 13.12.2007, 21:02 |
*задумчиво* а с чего ты взял, что топикстартер имеет в виду MFC?.. |
Автор: zkv 13.12.2007, 21:50 |
по умолчанию в этом разделе речь идет об MFC. ![]() |
Автор: DigitSphinx 13.12.2007, 23:01 |
ну вот да ![]() |
Автор: PandaRus 13.12.2007, 23:24 |
Перешел с Паскаля. Да, я понимаю, что цвет соответствует числу, сам задавал: RGB(0-255,0-255,0-255). Я имею ввиду - нарисовал я линию. Как сделать, чтобы заново считать цвета в различных точках линии и присвоить их переменным (какие есть операторы?)? |
Автор: PandaRus 13.12.2007, 23:37 |
Нарисовал, например, я кубик, 10 на 10 пикселей. Разукрасил от белого до красного (вроде RGB(0-255,0,0)). Затем хочу чтобы элементам массива A[10][10] присвоились числа от 0 до 255, соответствующие красному спектру. Т.е. беру верхний левый угол квадрата - если там белый пиксель, то А[0][0]=0, если красный, то = 255. И так каждый. |
Автор: JackYF 13.12.2007, 23:39 |
![]() DigitSphinx, Миль пардон. Чего-то я недосмотрел... или быстро тему переместили ![]() |
Автор: DigitSphinx 14.12.2007, 00:12 | ||||
цвет пикселя можно получить
а из COLORREF RGB можно вытащить так
JackYF, ![]() |
Автор: PandaRus 14.12.2007, 00:29 | ||
Вот так что-ли:
Не, что-то не так с последней строкой? Что за DWORD? |
Автор: DigitSphinx 14.12.2007, 01:51 | ||||
DWORD т.е. 4-х байтное значение, COLORREF 4-х байтный ))
т.е. код вот такой
|
Автор: PandaRus 14.12.2007, 17:25 | ||
Не понял что значит DC в DC.GetPixel. Написал так:
-Ошибка - Error 1 error C2660: 'GetPixel' : function does not take 2 arguments |
Автор: DigitSphinx 14.12.2007, 17:49 | ||||
DC имелось ввиду CDC на которовм рисуем.
т.е. тебе еще надо туда кидать и HDC (если бы ты писал на АПИ) но поскольку ты юзаешь МФСи то надо использовать CDC::GetPixel т.е. функцию МФСи, твой код будет таким.
|
Автор: PandaRus 14.12.2007, 18:08 |
Большое спасибо - все работает - соответствующие числа красного спектра пошли в мой файл |
Автор: DigitSphinx 14.12.2007, 18:16 |
помечай тему как решенную ![]() |
Автор: PandaRus 14.12.2007, 20:33 | ||
Новый вопрос появился - как менять цвет кисти? Нашел функцию: SetDCPenColor(hdc,RGB(0,0,0)) но опять не понял, как ей пользоваться - писал:
в ответ "CDC не может быть преобразован в HDC". Как будет правильно? И можно ли кроме цвета менять размер и тип кисти? |
Автор: PandaRus 14.12.2007, 21:41 |
Прошу прощения - воспользовался поиском |
Автор: KoliaMor 19.12.2007, 12:32 | ||||
Подскажите плиз, а то я че-то не догоняю: Есть массив BYTE* Pixels[W*H*3]; Когда я делаю
- копирование проходит нормально, а в если напрямую
- копируется только один цвет. Как распределяются RGB компоненты в массиве Pixel при использовании GetBitmapBits() ????? |