Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: visual studio mfc. как нарисовать треугольник в форме?  (Прочитано 32673 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
zuuuuk
Постоялец

ru
Offline Offline

« : 08-11-2011 15:07 » 

добрый день.
я недавно занимаюсь visual studio библ. mfc.
необходимо рисовать в форме. я добавил пикчерс на форму. и что дальше?.

как вообще создать и работать с изображением в форме?
 как нарисовать треугольник в форме?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 08-11-2011 15:31 » 

Нууу вобще-то надо начинать с азов. С теории. Лучшее, что могу порекомендовать, поскольку всё происходит под виндой, это Петцольд. Ключевые слова:
GDI, Device Context (он же DC), WM_PAINT.
По второму вопросу всё очень просто. Треугольник рисуется по трём точкам, которые соединяются отрезками. Поэтому начинать надо с линии. Другими словами, сможешь нарисовать линию, сможешь нарисовать и треугольник.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zuuuuk
Постоялец

ru
Offline Offline

« Ответ #2 : 08-11-2011 15:36 » 

я нашол класс cdc через который можно работать с экраном.
только как его добавить в приложение? ПРОСТО РУКАМИ НАПИСАТЬ?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 08-11-2011 15:39 » 

zuuuuk, так у тебя ничего не выйдет. Ага Это как если бы ты спросил: "как научиться водить автомобиль? просто нажать на педаль?"

Конечно, надо будет чегойн-то добавить, и уж конечно много чего придётся РУКАМИ ПИСАТЬ. Но как тебе такой ответ поможет? Ведь для управления автомобобилем надо, в частности, нажимать и на педаль, но это не всё. Знания нужны систематические, а поэтому берись за теорию.
« Последнее редактирование: 08-11-2011 15:41 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zuuuuk
Постоялец

ru
Offline Offline

« Ответ #4 : 08-11-2011 15:46 » 

я сейчас объясню. я раньше сталкивался с builder с++. там добовляешь кнопку и в тексте появляется класс
с которым работаешь. в vs также  добовляешь кнопочку потом добовляешь пременную и оттуда генерируется класс для приложения. только вот с картинками всё подругому.
как в приложение сгенерировать класс для работы с изображением?
« Последнее редактирование: 08-11-2011 15:49 от zuuuuk » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 08-11-2011 16:18 » 

zuuuuk, ты только не обижайся, но всё это выглядит как в детском фильме про Электроника: "Где у него кнопка?"

"Добавляешь кнопку", "нашёл класс cdc"... Это всё что-то вокруг да около. По-научному это называется "метод тыка". Авось что-нить получится. При этом ты совершенно не представляешь, ЧТО тебе надо делать и в какой последовательности.

Чтобы рисовать на форме никаких кнопок и "пикчерсов" ну совершенно не надо. Форма - это уже есть окно, а в любом окне под виндой можно рисовать. Рисование в винде происходит по сообщению WM_PAINT (MFC предлагает для этого ф-ции OnPaint и OnDraw), которое так или иначе получает это окно (в MFC, это объект-потомок класса CWnd, или же сам CWnd).

Вот ты говоришь "нашёл класс cdc", а что это такое? Что ты хочешь генерировать? Я не понимаю.

Для примера. Форма MFC диалог, с треугольником. Без всяких пикчерсов, имаджесов и баттонсов. Время реализации 1 мин.


* TestTriang.zip (79.56 Кб - загружено 903 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 08-11-2011 17:53 » 

offtop
поколение "однокнопочных"
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #7 : 08-11-2011 20:04 » 

zuuuuk,
Если тебе надо вывести графику, а не "сгенерировать клас" см. GetWinfowRect  GetClientRect
и примеры - напр. на firststeps.ru/mfc - там и примеры есть.
Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
zuuuuk
Постоялец

ru
Offline Offline

« Ответ #8 : 09-11-2011 03:00 » 

DneprSMV, благодарю за помощ.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 09-11-2011 08:47 » 

DneprSMV, а примеры чего? Чем ему поможет готовый код, если он не понимает ЧТО КУДА и ЗАЧЕМ? Ну передерёт он его, ну допустим он заработает, и что? Какая же это помощь? По-русски это называется "медвежья помощь". Я бы мог свой код выложить из примера выше, тем более, что там 4 строчки:

Код: (C++)
                CPaintDC dc(this);

                dc.MoveTo(10,20);
                dc.LineTo(40,50);
                dc.LineTo(60,30);
                dc.LineTo(10,20);

И что, всё сразу стало ясно и понятно?

зы ИМХО, такая "помощь" катализирует процветание псевдопрограммеров (на нашу голову). Есть такая хорошая китайская мудрость: "Дай человеку рыбу, и ты накормишь его только раз. Научи его ловить рыбу, и он будет сыт всю жизнь."
« Последнее редактирование: 09-11-2011 08:51 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #10 : 09-11-2011 15:26 » 

Джон, не знаю.  Жаль там есть и достаточно подробное описание работы с MFC - док.
Если у человека "одноразовая" задача-вопрос по принципу "сдал-забыл" то зачем зря тратить время. Если конечно нарушил политику насчет ссылок - извиняюсь.
--
А посмотреть различные варианты решений из разных источников, проанализировать, выбрать - мне кажется не помешает (способствует чтению-анализу файлов *.cpp, *.h и деланию выводов) Улыбаюсь
IMHO, естественно.
Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 09-11-2011 18:45 » 

Цитата: DneprSMV
Если у человека "одноразовая" задача-вопрос по принципу "сдал-забыл" то зачем зря тратить время.
Это вторичный вопрос. Первичный вопрос: что такой человек делает в вузе, если он вместо того, чтобы на лабораторных работах изучать, разбираться и пробовать делать, придерживается такого принципа? Зачем он тратить 4-6 лет своей жизни на "сдал-забыл"?

В данном случае у автора темы был стереотип поведения, который с точки зрения успешности в профессии, вреден. Ты же, вместо того, чтобы отучать от плохого и приучать к хорошему, просто закрепляешь плохой стереотип. И зачем это делать?
« Последнее редактирование: 09-11-2011 18:48 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 10-11-2011 09:30 » 

Если у человека "одноразовая" задача-вопрос по принципу "сдал-забыл" то зачем зря тратить время.

Зря тратить время кому? И что это значит "сдал-забыл"? То есть получается ты ЗА поколение псевдопрограммеров-недоучек? Ну и кому это надо? А потом, у меня бы, или вон у Димки, к примеру, студент с такой подготовкой однозначно не сдал бы. И вместо "забыл", получилось бы "надолго запомнил". Ты уверен, что экзаменатор разгильдяй-пофигист?

Цитата
А посмотреть различные варианты решений из разных источников, проанализировать, выбрать - мне кажется не помешает (способствует чтению-анализу файлов *.cpp, *.h и деланию выводов) Улыбаюсь

Эти доводы можно принять в случае, если человек знает матчасть и у него возникли проблемы с переходом на новый "инструмент". Достаточно ли хорошего владения отвёрткой, чтобы браться за ремонт автомобиля?
А пока его действия далеки от понимания того, что он делает (грубейшие грамматические ошибки опускаем): "добавил пикчерс", "нашёл класс", "сталкивался с builder с++", "добавляешь кнопку и в тексте появляется класс", вот это ваще перл:
добовляешь кнопочку потом добовляешь пременную и оттуда генерируется класс для приложения

Это что? Программирование? Работа?

зы Политику ссылок не нарушил, всё в порядке.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #13 : 10-11-2011 15:25 » 

Dimka, вопрос виртуально-субъективный Улыбаюсь тк subj zuuuuk "скрыт"
Яж пишу "если", "IMHO".
Джон,
Зря тратить время кому? И что это значит "сдал-забыл"? То есть получается ты ЗА поколение псевдопрограммеров-недоучек? Ну и кому это надо? А потом, у меня бы, или вон у Димки, к примеру, студент с такой подготовкой однозначно не сдал бы. И вместо "забыл", получилось бы "надолго запомнил". Ты уверен, что экзаменатор разгильдяй-пофигист?
. . .
Эти доводы можно принять в случае, если человек знает матчасть и у него возникли проблемы с переходом на новый "инструмент". Достаточно ли хорошего владения отвёрткой, чтобы браться за ремонт автомобиля?
. . .
Это что? Программирование? Работа?
. . .

режим "сдал-забыл" действует независимо от нашего желания. Причем даже для тех, кто сдает курс на "отлично".
Я за анализ-синтез, синтез-анализ, в хорошем смысле (не Copy/Insert).
"Ты уверен, что экзаменатор разгильдяй-пофигист?"  - Нет. Хотя нет исходных данных и для обратного утверждения.
То что человек зарегестрирован на этом сайте - уже плюс.
ps -
Цитата
"И вместо "забыл", получилось бы "надолго запомнил"
Существует два сорта бездельников: одних работа приводит в бешенство, другие от нее только скулят. (Ш. де Костер)

Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 10-11-2011 16:38 » 

Цитата: DneprSMV
вопрос виртуально-субъективный
Таких виртуальных субъектов тут пруд пруди. Чаще всего это студенты с лабами, хотя иногда попадаются люди, которым зачем-то понадобилось программирование, хотя они не специалисты в этом деле. Если человеку в окошке надо нарисовать треугольник, с вероятностью 90% это лаба. Если при этом человек сразу не признался, что он неспециалист, и ему досталась какая-то программа, в общем и целом готовая, где надо добавить треугольник, если треугольник - не вставленный битмап, а именно рисованный, это значит что его программа - программа рисования треугольника, и понадобится этот треугольник может только вузовскому преподу, потому что в реальной жизни никому такие сами по себе треугольники, как сферические кони в вакууме, не нужны, а нужно что-то ещё (типа рисования стрелки индикатора и т.п.), и тогда эта задача есть лаба с вероятностью 99%. Если же присовокупить сюда стилистику заданного вопроса, складывается образ молодого существа, взявшегося изучить MFC - скорее всего студента(ки), и вероятность того, что это лаба, возрастает до 100%.

И поскольку это лаба, ответ из "подсказать" превращается в урок с воспитательными элементами.

Если же это не лаба, а кто-то решил самостоятельно что-то изучить и для себя научиться рисовать треугольник, то такие субъекты проявляют высокую активность и старательно рассказывают то, что и как они делали, а также много спрашивают, ибо мотивированы получить результат, а не "забыть". Наблюдалось бы совсем другое поведение.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 11-11-2011 08:59 » 

режим "сдал-забыл" действует независимо от нашего желания.

Безусловно, но в наших силах, хотя бы в рамках этого форума, не культивировать оных, "чтобы потом, оглядываясь, не было мучительно больно" (с).

"Ты уверен, что экзаменатор разгильдяй-пофигист?"  - Нет. Хотя нет исходных данных и для обратного утверждения.

Так зачем тогда гадать на кофейной гуще? Тем более того пердпринимать какие-то шаги, основываясь на картинке кофейного осадка.
« Последнее редактирование: 11-11-2011 09:08 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 11-11-2011 09:09 » new

Подумал, а не разделить ли тему?
А то тут "воспитательный" процесс пошел... Улыбаюсь

Не дождетесь! Мне ее проще удалить!
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines