0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 19
|
|
1 | |
Графика в С++ в принципе16.11.2013, 14:06. Показов 6292. Ответов 59
Метки нет (Все метки)
Я новичек. Вернее сказать: очень новичек. Решил изучить С++ и попробовать программирование. В качестве хобби. Странное хобби конечно, но так. У моей жены,например, хобби расчищать снег перед моей машиной,даже когда это мне не нужно и никто это странным не находит. Так чем мое хобби хуже? Я нашел кучу литературы. Одну книгу, С. Прата, даже дочитал до конца (остальные просмотрел). Все понял (или мне так показалось), решил несколько упражнений разной сложности, программируя в консольном приложении. Поскольку это хобби, я решил решить сразу большую задачу: написать приложение для составления различных протоколов, актов, результатов замеров и.т.д. с архивацией, выводом на печать, возможностью корректировки и.т.д. Поскольку я новичек, то решил, что это вообщем не сложно и ООП, как раз для этого подходит. И тут возникла первая трудность, которую я не могу решить уже две недели. А именно начало. По мысли все должно начинаться так:при запуске программы--цветная заставка с кнопками меню, затем выпадающее меню и дальше... как бог пошлет. Но при запуске консольного приложения выскакивает маленькое черное окошечко в котором выполняется программа. И как в нем реализовать мои грандиозные планы неясно. Я задавал этот вопрос на разных форумах и все ответы можно разделить на два:1. Это как то по другому 2.Иди в жопу (учи мат.часть). Но влюбой книге (мат.части) сказано: прочитай меня без графики, а графика это уже проще. Копаясь в интернете я выяснил, что есть две возможности:1.Преревести экран в графический режим и рисовать с помощью функций. 2. Использовать OpenGL, DirectX, Win32API и.т.д. По поводу первого способа: я понял, что это устаревший вариант и сейчас так сделать нельзя. По повод второго способа, я столкнулся с рядом трудностей: во-первых мой компилятор(IDE) (code::blocks) поддерживает не все варианты, т.е. проекты такие есть, но проблемы с библиотеками и заголовочными файлами, а менять code::blocks на что-нибудь другое не хотелось бы. Во вторых я так и не нашел соответствующей литературы, где бы четко и ясно (как в учебниках по С++) разъяснялось, как это делается в ПРИНЦИПЕ, с самого начала. Если бы кто-нибудь из опытных(или не очень) гуру пояснил бы мне с чего начать(или начальную литературу) или подсказал иной вариант или способ, я был бы очень рад и благодарен.
С уважением Новичок
0
|
16.11.2013, 14:06 | |
Ответы с готовыми решениями:
59
Загрузка изображений и файлов в принципе Не могу разобраться в принципе работы цикла Не могу разобраться в принципе работы цикла Ищу курсы/книги по ИИ в принципе и нейросетям в частности |
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
16.11.2013, 23:26 | 21 |
Rudnik, Графический интерфейс он просто дает возможность менять параметры настройки программы и запускать программу несколько раз на выполнение. Я от не создал еще ни одного окошка, ну в принципе консольную программу можно запускать каждый раз с разными настройками. Просто создай файл текстовый в него запиши настройки и запускай программу, программа должна считать настройки их этого файла, инициализироваться так сказать отработала завершила свою работу. Ты берешь открываешь этот текстовый файл и меняешь его содержимое, ну это настройки программы, снова запускаешь программу.
Гуи тут догадываться не нужно явно видно дает возможность менять настройки програмы, скажим так редакритует этот файл используя меню и запускает выполнение программы, походу поддерживает несколько потоков в одном потоке сама программа выполняется с менюшками которые редактируют этот файл, и этот поток создает еще один поток в котором отрабатывает основная программа которая читает настройки из файла, настройки которые редактируются с помощью менюшек. Ну и что тут сложного, создай файл с настройками и саму программу которая будет читать эти настройки и просто запускай хотябы саму программу. Это вообще то мое представление ГУИ да и вообще ГУИ ото обычные формы и кнопочки по нажатию которых что нибуть происходить, ну в моем примере ГУИ должно быть в виде формы, что бы можно было ее заполнить и отредактировать настройки самой программы. Добавлено через 5 минут Вообще если для себя пишешь программы, то можно за ГУИ не беспокоится, достаточно текстового файла в котором собрать все настройки программы. Гуи я так считаю нужны для таких программ которые будут создаваться для кого нить, что б он смог разобраться и сам легко поменять настройки. Те программы что для себя пишешь, там ГУИ и нафиг не нужны!!! Добавлено через 49 секунд Так что не заморачивайся, у тебя программа должна работать сначала без ГУИ, а затем уже прикрутишь. Добавлено через 47 секунд Да как целое оно не будет работать без ГУИ, но как набор программ, может работать по отдельности.
2
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
16.11.2013, 23:35 | 22 |
Ребята, я очень рад, что вы поняли о чем идет речь. Да, ни один конечный автомат с этой задачей не справится.
Не по теме: Мы с приятелем уже в годы мехматской юности это с удовольствием выяснили, и вот я прихожу к нему с бутылкой и с воплем - "Я знаю. как сделать программу, вычисляющую корень из двух!" Он меня просто выгнал вон. Вместе с бутылкой. К сожалению, в дальнейшем мы к этой теме не возвращались, и уже не возвратимся по причине отсутствия моего приятеля на этом белом свете. А у меня была такая идея. Вот, стоит большая ЭВМ ЕС-1052. И девчонки тащут к ней магнитные ленты. Столько, сколько она через свой пультовой машинописный интерфейс попросит. И дело в том еще, что представление любого иррационального числа в виде десятичного, это - процесс, а не некий конечный результат. Для процесса (если он не цикличен) необходима бесконечная память. Вот МТ этой памятью обладает. И алгоритм прост до смешного. Для той же МТ он займет не более 10000 строк. Да и любой язык, дай ему бесконечную память, сделает все это даже ловчей. На том же Си можно, думаю в сотню строк уложиться. Нас же учили в школе (как вас - не знаю, а меня учили) извлекать корни не то столбиком, не то ступенькою. Алгоритм - незамысловатый, не помню уж какой. Дело было только в количестве бумаги... Добавлено через 4 минуты Не по теме: Простите, но это уже не программирование. Это даже ближе к философии, чем к математике. И не надо забывать, что Эммануила Кантора доконало все-таки МДП.
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
16.11.2013, 23:37 | 23 |
Тут от явно видно что можно создать само приложение (приложение для составления различных протоколов) ну и настроечный файл в котором будет задаваться текущий протокол, от для начала создай просто консольное приложение для кокого нибуть протокола допустим протокола№1, запиши в файл настройки все исходные данные программы и запусти программу, все она работает, дальше делай измени файл настройки добавь какой нить другой протокол например протокол №2, научи программу что бы она понимала что сейчас нужно обработать протокол №2, потом научи программу что бы она понимала различные акты, результаты измерения, просто научи программу читать файл настроек! Добавь какие нить флаги в этой файл настроек, нужна ли архивация или нет, нужно ли выводить на печать или нет, просто научи программу общаться с пользователем через файл.
А дальше, а дальше ты будешь знать как работать с программой через файл, ну а для обычных пользователей создашь потом ГУИ менюшки и всякую фигню, там уже не сложно будет ГУИ заставить редактировать текстовый файл настроек. В общем это мое ИМХО, возможно я ошибаюсь, но походу нет.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
16.11.2013, 23:43 | 24 |
Так всё же, посчитать или отобразить? Можно ведь и уравнения в символьной форме решать в каком-нибудь маткаде. А уж представить корень из двух как проще пареной репы. И это будет, между прочим, точный результат.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
17.11.2013, 00:59 | 26 |
Не считая того, что это ужас что такое! Писывали, писывали на ВинАпи! Не застрелился только от того, что все-таки есть обертки.
Добавлено через 16 минут Не думаю, что вы не поняли, о чем идет речь. Впрочем, плевать. Много ли вы знаете трансцендентных (не алгебраических, которые являются решениями простых уравнений) чисел? Я знаю 2 таких числа - ПИ и Е (ну и все им кратные). И доказательства их несводимости к такой ерунде, как sqrt(2) занимает несколько серьезных страниц. Но их же значительно больше, чем всех остальных. А мы их практически никого не знаем в лицо. Казалось бы - обычные числа. Ан - инопланетяне. Господа, простите за бред. Ни на чем не настаиваю. Если Рамануджан записывал все натуральные числа себе в друзья, то мне остались только те, которые не пересчитываются.
0
|
Неэпический
|
|
17.11.2013, 06:28 | 27 |
Не по теме: дальше не читал... Вперед писать на Visual Basic + WinAPI, это такая веселуха :D Можете поставить себе задачу более подходящую по текущим Вашим знаниям. Поверьте, эта проблема чуть более чем пустышка по сравнению с теми, что Вас ожидают. А кому нужна эта кроссплатформенность, вот в чем вопрос. (c) Саня Недошекспир Не думаю, что новичку в программировании вообще нужен кроссплатформенный код, да что там говорить о новичках, если большая часть софта пишется под конкретную платформу. Я бы посоветовал повозиться в консоли и замахиваться на ГУЙню только после основательного изучения языка, да и если писать "крупный" проект, то знания лишь языка и библиотек будет не достаточно.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
17.11.2013, 07:34 | 28 |
Я только к тому это написал, чтобы ТС понял, что Qt - это не WinAPI.
Для Qt вполне достаточно, там и своего хватает. Макс Шлее. "Qt 4.5. Профессиональное программирование на C++ (2010)" и вперёд, к большой задаче.
1
|
Tulosba
|
17.11.2013, 08:37
#29
|
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
17.11.2013, 09:25 | 30 |
Rudnik, с такими глобальными вопросами будет на долго.
0
|
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 19
|
|
17.11.2013, 18:46 [ТС] | 32 |
Господа! Всем спасибо за ответы. Но кое чего, я все таки не понял. Наверняка, это из-за того что я немного(а может и не немного) туповат. Сейчас объясню. Я уже немного разобрался в С++. В такой степени, что могу решить практически любую бытовую задачу. Красиво, некрасиво, это второй вопрос. Но только в консольном приложении. Поскольку на меня ничто не давит, я могу себе позволить решение практических заданий. это мне кажется интересным. Я работаю испытателем на заводе. Выглядит это примерно так: я беру изделие и бью его, окунаю, нагружаю высоким напряжением и.т.д. Это называется испытаниями. По результатам этих действий, я готовлю протокол. Ради праздного интереса, я решил сделать программу, которая готовит любые документы для лаборатории(место где я работаю). Представляю себе это так: заставка с открывающимся меню с запросом какой документ нужен, далее я ввожу результаты замеров и программа готовит документ (это в упращенном виде). Теоретически протокол можно описать как класс: есть данные(массивы, строки, символы, численные данные различных форматов и дак далее) и есть ряд действий которые с протоколом можно проводить (печатать, архивировать, вносить изменения и.т.д) т.е. методы класса. В общем такова задумка. Реализация этой идеи носит скорее учебный характер(в процессе я многое наверняка узнаю, пойму). А применимость этой задачи к моей работе делает ее интересной. Руководство от меня этого не требует и даже не знает об этом, так что я "вольный стрелок" и это еще один плюс.
Но все уперлось в графическую часть, я даже не понимаю как к этому подступиться. OpenGL, DrectX, WinAPi, GUI, что именно использовать, на какой платформе это лучше, как будет связаны графическая и основная часть программы этого я до сих пор не понял. Вы же как то начинали, т.е. это наверняка где то изложено. И этот барьер я не могу никак перейти. Такое впечатление, что это как то не сложно, но как я не понимаю. Это сейчас, для меня как две реки: я научился плавать в одной, но не знаю, как попасть в другую, и как переходить из одной в другую. Да... аналогия еще хуже... но как то как. Хорошо:ответьте мне на вопрос:как это было у Вас?
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
17.11.2013, 18:49 | 33 |
Много букв. Вы скачали Qt? Прочитали мануал? Запустили пример? Посмотрели код? (Вот так вот и было)
2
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
17.11.2013, 22:32 | 34 |
Да не стойте вы так перед ним! Начинайте! Есть пословица - "Самая длинная дорога начинается с первого шага" (это по-китайски, вольный перевод - "Дорогу осилит идущий") Вам все уже сказали. Ждем шагов ваших конкретных и конкретных же вопросов.
А вот так и было! (почти цитирую stima)
Знаете, даже некоторые фривольные аналогии напрашиваются...
0
|
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 19
|
|
18.11.2013, 15:02 [ТС] | 35 |
Всем еще раз огромное спасибо. Скачал QT Creator 1.2.1. Сейчас попробую.
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
18.11.2013, 17:53 | 37 |
У меня еще этого не было, да нашо он тебе нужен? У тебя что уже есть готовая рабочая программа без ГУИ? Я так понял нету. Любую прикладную программа пишется без ГУИ, мой тебе совет забей ты на ГУИ. В самом конце когда уже будет готовая рабочая программа тогда уже прикрутишь.
Добавлено через 2 минуты Ну так для этих задач ГУИ и нафиг не нужен, в файл данные введи запусти программу и пусть она результат выведет в файл и все. Чо вы все так сразу на ГУИ помешались?
0
|
0 / 0 / 1
Регистрация: 23.10.2013
Сообщений: 3
|
|
19.11.2013, 17:50 | 38 |
http://yuan.at.tut.by - Страничка с графической библиотекой, примерами и т.д.
Работает от Win 95 до Win 7 как минимум. Скомпилировано на Борланде 5.2
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
19.11.2013, 19:30 | 39 |
Сообщение было отмечено как решение
Решение
Ну а повнимательнее прочитать, чего хотит ТС - нет ни времени ни сил?
Ему ж БД нужна! И вы предлагаете как при каменном веке с БД работать на консоли? Сама идея использования Базы Данных уже предполагает графический интерфейс. Или как? Покажи запись 585? И меню "Нажми 1, чтоб скорректировать, 2, чтоб удалить, 3, чтоб добавить?"
Что ж ты вполне креативного ТС в пещеру засовываешь, да еще невыделанную шкуру на него пытаешься напялить?
4
|
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 19
|
|
28.11.2013, 18:07 [ТС] | 40 |
Это опять я. Я скачал QT5 и книгу М. Шлее по QT4.5. Много не соответствий. Но я стараюсь. Сейчас столкнулся с проблемой и не как ее не решу. Задача в следующем: сделать окно и закачать в него растровое изображение из другого файла. Это будет заставка. Стал делать по книге. Все отлично до того момента, как записать растровое изображение из файла. Программа в упор не видит моего файла. Все списал из книги. Файл с расширением jpeg поместил в папку с исходниками. Вариант программы ниже (с поими пояснениями). Выводит просто черное окно с названием. Подскажите, что не так, если возможно
#include "mainwindow.h" #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication mainprog(argc, argv); QWidget mainwin; QPalette mainpal; mainwin.setWindowTitle("ЛАБОРАТОРИЯ"); // Название окна mainpal.setBrush(mainwin.backgroundRole(),QBrush(QPixmap("lab.jpeg"))); //Попытка подключения файла mainwin.setPalette(mainpal); mainwin.setAutoFillBackground(true); mainwin.show(); return mainprog.exec(); }
0
|
28.11.2013, 18:07 | |
28.11.2013, 18:07 | |
Помогаю со студенческими работами здесь
40
Как круг вписать в массив и возможно ли в принципе? Можно ли в принципе максимально апгредейдить эту мать Как в принципе передавать картинку в апплет в runtime. Вывести top сумм с сортировкой, возможно ли в принципе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |