|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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 |
Пользователь
Регистрация: 11.08.2007
Сообщений: 69
|
Советовать можно лишь в деле, в котором сам собираешься участвовать.
|
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 |
Новичок
Джуниор
Регистрация: 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. |
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
Как можно удалить мои художества теперь?Скажем по нажатию на кнопку?Все строиться и рисуется прекрасно,но нужно иметь возможность удалить все и посмтроить заново |