Форум программистов CodeGuru
16 Январь 2018, 11:53:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Графика в MS Visual C++  (Прочитано 22369 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« : 12 Октябрь 2008, 23:23:23 »

Поставлена задача нарисовать на белой поверхности точки рандомом.
Не знаю как это сделать ПРОЩЕ.
Точнее ВООБЩЕ не знаю как это сделать... Смущение
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 13 Октябрь 2008, 00:00:29 »

А проект какого типа создан ?
MDI/SDI на основе View, или диалоговое приложение ?

Вобщем, рисование происходить примерно одинаково - посредством использования объектов классов, производных от CDC. Только есть нюансы создания объектов (в смысле объекты каких типов создавать).

Например, чтобы рисовать в диалоге, можно создавать контекст устройства для клиентской области (CClientDC) в обработчике сообщения WM_PAINT (OnPaint).
В классах, производных от CView (при использовании архитектуры Document-View) контекст устройства создается автоматически (указатель на него передается в виртуальную функцию OnDraw). Все что надо - это добавить OnDraw в класс view при помощи класс-визарда (вызывается при помощи Ctrl-W), а потом использовать указатель, передаваемый в качестве параметра OnDraw.
« Последнее редактирование: 13 Октябрь 2008, 00:18:59 от 3V » Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #2 : 13 Октябрь 2008, 00:09:42 »

Пока ничего не создано!
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 13 Октябрь 2008, 00:20:47 »

Ну тогда надо создать Улыбка

Сама студия то есть ?
Если да, то создаем проект MFC, SDI, на основе Document-View архитектуры.
Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #4 : 13 Октябрь 2008, 00:56:17 »

Сама студия есть. МС 2005

"создаем проект MFC, SDI, на основе Document-View архитектуры."
вот это не понял... Грустный
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #5 : 13 Октябрь 2008, 01:16:40 »

Ну... начинаешь создавать новый проект.
Там можно выбрать типы проектов (в частности, MFC-проект).
Ну и дальше там выбираешь тип приложения, и.т.д...
Вот тип приложения - SDI (Single Document Interface).
Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #6 : 13 Октябрь 2008, 01:28:40 »

Там нельзя такое создать... вот бля буду нельзя!
Можно только 3 штуки с MFS:
activeX control
dll
aplication
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #7 : 13 Октябрь 2008, 01:35:04 »

Походу, aplication и нужно.
Я завтра тогда на работе гляну, набросаю тестовый пример.
Сейчас просто ппц спать охота Улыбка
Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #8 : 13 Октябрь 2008, 23:57:27 »

Создал... там КУЧА файлов с кодом в проекте теперь... где писать код и что ваще делать... челюсть опускается на пол
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #9 : 14 Октябрь 2008, 03:00:21 »

Ну, вот если создан проект MFC, то обычно там есть пары файлов *.h и *.cpp, в который находятся декларации и реализации классов проекта.
Классы, которые определены в проекте, можно видеть во вкладке Class View.
Там обычно классы типа:
C<что-нибудь>Application - класс приложения
CMainFrame - класс главного окна-рамки
C<что-нибудь>Document - класс документа
C<что-нибудь>View - класс представления
и другие...

Это если проект на базе архитектуры документ-облик (документ-представление).

Вот, можно открыть файл реализации класса представления (имя класса оканчивается на View), и там добавить метод OnDraw.
Короче, надо виртуальный метод добавить... и в нем уже писать алгоритм прорисовки.

З.Ы. вообще, честно говоря, не совсем понятно, что надо объяснить... Общие принципы рисования в Windows, или вообще как работать с MS Visual Studio ? Улыбка
Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #10 : 14 Октябрь 2008, 18:02:47 »

Обьяснить и то и то! )))
С Визуалом опыта очень мало - учили то нас на Borland 3.1 ...
Записан
ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #11 : 16 Октябрь 2008, 02:15:12 »

Так!
Я кажись почти разобрался. У меня остались такие вопросы:
-куда добавлять хедерный файл для рисования графики?
-где писать функции рисования
-где писать функции с массивами куда будут загоняться координаты точек а так же прочие вычисления
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #12 : 19 Октябрь 2008, 16:10:12 »

Так!
Я кажись почти разобрался. У меня остались такие вопросы:

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

-где писать функции рисования
Ну, если проект MFC на базе архитектуры "документ/представление" (document/view), то рисование должно производиться в методе OnDraw класса View (класса, наследованного от CView). Этот метод можно добавить при помощи Class Wizard.

-где писать функции с массивами куда будут загоняться координаты точек а так же прочие вычисления
Согласно концепции этой архитектуры (document/view), данные должны храниться в классе документа (тот, что наследован от CDocument), методы обработки данных обычно принадлежат этому классу.
Записан

ColdDeath
Интересующийся
**
Офлайн Офлайн

Сообщений: 10


Просмотр профиля
« Ответ #13 : 19 Октябрь 2008, 21:41:07 »

оО а я думал ты решил что я безнадежен и забил на меня)))
Очень хорошо, я в общем сделал так:
в классе OnDraw добавил функцию которая рисует линию (спиздил из примера в книжке)
 а перед самим начало класса добавил нужный хедер... но, но,но ничего не заработало!

Еще меня сильно смущает отсутствие функции main... а нам говорили что без нее любая прога на Си++ не заработает.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #14 : 20 Октябрь 2008, 02:18:10 »

оО а я думал ты решил что я безнадежен и забил на меня)))
Да просто переставлял на компе все. Пытался скрестить винду и линух новый.

Очень хорошо, я в общем сделал так:
в классе OnDraw добавил функцию которая рисует линию (спиздил из примера в книжке)
Бр... ничего не понял... а можно код сюда закинуть ?

Еще меня сильно смущает отсутствие функции main... а нам говорили что без нее любая прога на Си++ не заработает.
main есть.
Точнее, под виндой это WinMain. Но в твоем проекте ее нет. Она в движке MFC спрятана.
Из нее вызывается (насколько я помню), AfxWinMain, в AfxWinMain уже производятся действия по инициализации приложения (в частности, вызывается InitInstance объекта приложения (объект класса, производного от CApp)).
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!