Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с рисованием в с++ 
:(
    Опции темы
Гость_Дмитрий
Дата 17.12.2005, 14:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте.

По учебе задали построение эвольвент через классы.

При подключении к borland 3.1 graphics.h, он начинает ругаться, что initgraph, setcolor, и др. функции из "с" неопознаются.

В Visual c++ вообще не поддерживается эта библиотека.

Подскажите пожалуйста как можно в с++ программно рисовать. И где это проще сделать в borland или в visual?

p.s. время поджимает, если можно расскажите поконкретней пожалуйста.
  Вверх
BreakPointMAN
Дата 17.12.2005, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Дмитрий, сначала определись со средой, в которой ты хочешь программу написать... С графикой можно везде работать, правда, подходы везде будут разные... Ибо в понятие языка C++ понятие графики как таковой не входит, рисование обеспечивается либо средствами операционной системы, либо графическими библиотеками конкретных сред...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
BreakPointMAN
Дата 17.12.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24





Цитата
При подключении к borland 3.1 graphics.h, он начинает ругаться, что initgraph, setcolor, и др. функции из "с" неопознаются.

А ты уверен, что все настройки среды корректны?

Должны быть верно прописаны все пути (где-то примерно в Options==>Directories... поля "Include Directories" и "Library Directories" или как-то так...)

!!! Должна быть подключена библиотека графическая (Options==>Linker==>Libraries... и там галочка напротив "Graphics library" или около того...)

bgi-файл должен лежать в той же папке, что и откомпилированная программа, либо путь к нему должен быть явно указан:
Код

int dr=VGA, mod=VGAHI; // выбрать BGI-драйвер и графический режим
initgraph(&dr,&mod,"C:\\TC_3\\BGI"); // выполнить инициализацию графики (последний параметр - путь)


Поищи на этом форуме, часто очень поднимаются темы насчет программирования графики - были уже и исходные коды программ, и советы разные...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Гость_Дмитрий
Дата 17.12.2005, 15:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 BreakPointMAN: как я могу определиться со средой, если я не знаю особенностей этих сред?

Я могу сделать программу на с, которая будет строить то что мне нужно. Но мне задали сделать такую программу с использованием классов в с++. Можно сделать и с помощью visual, но эту программу я впервые открыл вчера, так что не очень предтавляю как с ней работать.

Класс у меня должен осуществлять такие действия:

В соответствии с введенным числом l (длиной графика) и числом n особенностей графика (типа числа линий в ломанной) строить этот самый график.

Дайте хоть какую-нибудь информацию по любой из сред (borland/visual)
  Вверх
BreakPointMAN
Дата 17.12.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата
Дайте хоть какую-нибудь информацию по любой из сред (borland/visual)

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

А вообще, ИМХО, начинающему будет проще работать с графикой в среде Borland C++ Builder, но это только ИМХО.


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Guest
Дата 17.12.2005, 18:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 BreakPointMAN: Большое спасибо. выручил.
пришлось правда немного повозиться и скопировать egavga.bgi в bin (непонятно зачем).


  Вверх
Wird
Дата 27.12.2006, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



Здравствуйте.
Учусь на с++.
Как картинку с экрана отправить в файл, а потом оттуда извлечь?
Помогите плз
PM MAIL   Вверх
zkv
Дата 27.12.2006, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Wird @  27.12.2006,  02:55 Найти цитируемый пост)
Учусь на с++

рад за вас, какой компилятор используете?
Цитата(Wird @  27.12.2006,  02:55 Найти цитируемый пост)
картинку с экрана

скриншот сделать? Или что вы имеете ввиду?
PM MAIL   Вверх
Wird
Дата 27.12.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



bc3.11
рисуешь в с чего-нибудь, пихаешь в файл, и так далее
а потом по счётчику извлекаешь определённый образ
с getimage и putimage вроде ясно, а вот как потом из буфера в правильном формате в файл засунуть, а потом извлечь(и при этом на экране возникла нужная картинка, а не что-то ещё)



Это сообщение отредактировал(а) Wird - 27.12.2006, 23:18
PM MAIL   Вверх
zkv
Дата 28.12.2006, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Wird, каков вопрос таков и ответ: 
fopen() - открыть файл, в вашем случае, скорее всего режим для чтения "rb", для записи "wb"
fwrite() - 
Цитата(Wird @  27.12.2006,  23:06 Найти цитируемый пост)
пихаешь в файл

fread() - 
Цитата(Wird @  27.12.2006,  23:06 Найти цитируемый пост)
а потом извлечь

fclose() - закрыть файл



PM MAIL   Вверх
Wird
Дата 28.12.2006, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



пойдём другим путём
прога что-то записывает в txt, а извлекает бред

#include<graphics.h>
#include<stdlib.h>
#include <stdio.h>
#include <io.h>
#include <dos.h>
#include <errno.h>
#include <alloc.h>
#include <conio.h>
#include <FCNTL.H>
#define MAXSIZE 10

int count;
int maxx, maxy;
void  far *ptr;

int init_lib()
{

  int fd = open ("D:\\TC\\@\\LIB.txt", O_WRONLY);
    if (fd < 0) {
        printf ("ЋиЁЎЄ  ЇаЁ ®вЄалвЁЁ д ©« (Є®¤ %d)\nexiting...\n", errno);
        return errno;
    }
     count = 0;
     lseek(fd, 0, 0);
    write (fd, &count, sizeof(count));

    //    § Єалў Ґ¬ д ©«
    close (fd);
    return 0;
}


void push(int x1, int x2, int y1, int y2, void far *buf)
{
  if(!(count==MAXSIZE))
   {
    int fd = open ("D:\\TC\\@\\LIB.txt", O_RDWR);
    unsigned size;
    size = imagesize(x1, y1, x2, y2);
    if ((buf = farmalloc(size)) == NULL)
      {
     closegraph();
     printf("Error: not enough heap space in save_screen().\n");
     exit(1);
      }

    getimage(x1, y1, x2, y2, buf);
    lseek(fd, 0L, SEEK_END);
    write (fd, &size ,sizeof(size));
    write (fd, &buf, size);
    count++;
    close (fd);
   }
  else
   {
    printf("Net mesta!\n");
    exit(0);
   }
}

void show(int num, int x, int y, void far *buf){
 int fd = open ("D:\\TC\\@\\LIB.txt", O_RDWR);
 int i=0;
 unsigned size;
 lseek(fd, sizeof(count), 0);
 for(i = 1; i < num; i++){
 read(fd, &size, 2);
 lseek(fd, 2, 1);
 lseek(fd, size, 1);
}
 read(fd, &size, 2);
 lseek(fd, 2, 1);
/*if ((buf = farmalloc(size)) == NULL)
      {
     closegraph();
     printf("Error: not enough heap space in save_screen().\n");
     exit(1);
      }
  */
 read(fd, &buf, size);
 putimage(x, y, buf, COPY_PUT);
}


void main()
{
   int gdriver=DETECT, gmode, errorcode;
//   int fd = open("D:\\TC\\@\\LIB.txt", O_RDWR);
   /* auto-detect the graphics driver and mode */
   initgraph(&gdriver, &gmode, "d:\\TC\\bgi");
   errorcode = graphresult();
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
   }
   scanf("%d %d", &maxx, &maxy);
   cleardevice();
   rectangle(0, 0, maxx, maxy);
   line(0, 0, maxx, maxy);
   line(0, maxy, maxx, 0);

  // if (read(fd, 1, 1)==EOF) init_lib();
  // close(fd);
   push(0, 0, maxx, maxy, ptr);    /* save the current screen */
   getch();             /* pause screen */
   cleardevice();
   getch();
   show(1, 20, 30, ptr);/* restore the screen */
   getch();             /* pause screen */
   closegraph();
}
PM MAIL   Вверх
zkv
Дата 28.12.2006, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



во-первых существует кнопка "код" вверху окна ввода, во вторых код плохо читаем, например
 lseek(fd, 2, 1);
что такое 1? наверное  SEEK_CUR, как думаете, какой вариант удобнее  для восприятия, ваш или такой:
 lseek(fd, sizeof(size), SEEK_CUR);
ну и догадки:
Код

lseek(fd, sizeof(count), 0);
 for(i = 1; i < num; i++){
 read(fd, &size, 2);//разве read не смещает позицию в файле?
 lseek(fd, 2, 1);     //еще раз на всякий случай? :)
 lseek(fd, size, 1); 
}

и где проверка ошибок чтения\записи? все можно (и даже нужно) держать под контролем
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.