Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2007, 15:41   #1
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию Visual C++ Формирование гистограмм

Вообщем угораздило меня,пошел я в Магистратуру...в этом семестре проходим VC++ самостоятельно.В итоге должны сделать по простенькой программе к экзамену.
До этого имел знакомство с VB и VB.NET,соответственно имел дело с Visual Studio.Там все наглядно+самоучители по VB.net есть,вообще разобраться можно!А вот с VC++ чет не клеится нефига.
Вообщем смысл задачи-сделать программу,чтобы пользователь мог построить гистограмму по своим данным.
При этом он вводит количество гистограмм на графике,название осей графика и подпись к гистограмам(ну стандарт короче,аля EXCEL)(гистограмм 2-10)
Ну и соотвественно значения этих гистограм(1-100)
Подскажите как можно это сделать?Хотя бы в нужную степь толкните,а самоучителях ничего полезного пока не нашел.Буду благодарен за подсказку.

ЗЫ.Как лучше сделать переход из одной формы в другую в режиме диалока,ну мол "Введите число гистограмм,нажмите далее","Введите название осей координат,нажмите далее" и тд.
Вообще не могу найти команду переходна(открытия) новой формы...
Если есть советы где можно в электронном виде почитать что то,буду благодарен

Последний раз редактировалось merax; 04.10.2007 в 14:32.
СВой вне форума Ответить с цитированием
Старый 19.09.2007, 00:09   #2
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

Желающих или могущих попочь нет?Печально...
СВой вне форума Ответить с цитированием
Старый 19.09.2007, 17:06   #3
Персей
Пользователь
 
Регистрация: 18.09.2007
Сообщений: 13
По умолчанию Гистограмма

Это можно проделать на MFC, используя С++
Персей вне форума Ответить с цитированием
Старый 20.09.2007, 14:38   #4
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

Спасибо за направление,вчера в книжке прочитал некоторую информацию про MFC,до графики как таковой не добрался...копаю пока
СВой вне форума Ответить с цитированием
Старый 20.09.2007, 23:41   #5
necky
Пользователь
 
Аватар для necky
 
Регистрация: 11.08.2007
Сообщений: 69
По умолчанию

http://www.firststeps.ru/mfc/steps/mfc1.html
Советовать можно лишь в деле, в котором сам собираешься участвовать.
necky вне форума Ответить с цитированием
Старый 21.09.2007, 10:02   #6
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

Ух ёё...Спасибо....буду лопатить...что то там дох...много вообщем
СВой вне форума Ответить с цитированием
Старый 24.09.2007, 10:29   #7
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

Уф....насколько все проще в VB.net
Как можно просто считать данные из текстового поля?Допустим я ввожу цифру в это поле и мне нужно эту цифру присвоить переменной,которой я в дальшшем буду пользоваться.
Зарнее благодарен

Вообщем более менее разобрался с рисованием нескольких прямоугольников,получилось примерно так


void CRec1View::OnDraw(CDC* pDC)
{
CRec1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

CBrush br;
br.CreateSolidBrush(RGB(255, 255, 0));
CDC* cdc=GetDC();

CBrush *oldBrush=cdc->SelectObject(&br);
cdc->Rectangle(0, 0, 20, 20);
cdc->SelectObject(oldBrush);
cdc->Rectangle(0, 20, 20, 40);

CBrush bre;
bre.CreateSolidBrush(RGB(215, 250, 0));
cdc->SelectObject(&bre);

cdc->Rectangle(50, 50, 20, 20);

CBrush bred;
bred.CreateSolidBrush(RGB(128, 0, 0));
cdc->SelectObject(&bred);
cdc->Rectangle(100, 100, 20, 20);

}

Подскажите,в тексте проги выделил 2 строчки!никак не пойму!Что первая из них оюзначает?Может кто разъяснит что в этой строчке делается.?

Последний раз редактировалось СВой; 24.09.2007 в 13:40.
СВой вне форума Ответить с цитированием
Старый 25.09.2007, 15:32   #8
RUSgg
Новичок
Джуниор
 
Регистрация: 25.09.2007
Сообщений: 1
По умолчанию

CBrush *oldBrush=cdc->SelectObject(&br); /* - выбор текущей кисти для контекста cdc, с сохранением старой кисти в oldBrush. Сохранение делается для того, что бы по окончанию работы текущей кисти можно было восстановить предыдущую (так делается практически для всех объектов связанных с контекстом устройств) Тока мне не понятно, а нафига для каждой кисти свою переменную создавать? Не проще ли обойтись одной переменной?, тогда код мог бы выглядеть так:

void CRec1View::OnDraw(CDC* pDC)
{
// CRec1Doc* pDoc = GetDocument(); - в данной функции не требуется
// ASSERT_VALID(pDoc);

CBrush brush, *pOldBrush;

brush.CreateSolidBrush(RGB(255, 255, 0));
pOldBrush = pDC->SelectObject(&brush);
pDC->Rectangle(0, 0, 20, 20);

pDC->SelectObject(pOldBrush);
pDC->Rectangle(0, 20, 20, 40);

brush.CreateSolidBrush(RGB(215, 250, 0));
pDC->SelectObject(&brush);
pDC->Rectangle(50, 50, 20, 20);

brush.CreateSolidBrush(RGB(128, 0, 0));
pDC->Rectangle(100, 100, 20, 20);

pDC->SelectObject(pOldBrush); // воостанавливаем начальную кисть
}

Последний раз редактировалось RUSgg; 25.09.2007 в 15:34.
RUSgg вне форума Ответить с цитированием
Старый 25.09.2007, 16:22   #9
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

Ошибка при компиляции выходит
Не получалось у меня как ты писал,я примерно так же пробывал...Не создавая новую кисть,а пытаясь изменить тип текущей ,вроде этого brush.CreateSolidBrush(RGB(215, 250, 0));
pDC->SelectObject(&brush);
pDC->Rectangle(50, 50, 20, 20);

но при компиляции VC++ ругался...зараза

Еще один вопрос...один из последних,я делаю прогу в диалоговом окне...вчера повесил на кнопку чтобы графики гистограм выводились по нажатию,но я хочу чтобы оси гистограммы рисовались сразу после запуска программы!Не пойму в какой класс нужно писать код,чтобы сработало это...куда не пробывал-везде ошибка компиляции.
Метода OnDraw,как я понял в диалоговых окнах нету

Последний раз редактировалось СВой; 26.09.2007 в 10:09.
СВой вне форума Ответить с цитированием
Старый 08.10.2007, 17:24   #10
СВой
 
Регистрация: 17.09.2007
Сообщений: 7
По умолчанию

UP
Как можно удалить мои художества теперь?Скажем по нажатию на кнопку?Все строиться и рисуется прекрасно,но нужно иметь возможность удалить все и посмтроить заново
СВой вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск