понедельник, 7 апреля 2014 г.

Работа с графической библиотекой в Code Blocks

WinBGIm - это графическая библиотека BGI, портированная by Michael Main at the University of Colorado.
Для того, чтобы подключить ее в IDE Code Blocks, необходимо выполнить следующие действия
Внимание! Библиотека несовместима с новыми версиями Code Blocks, поэтому рекомендую скачать portable версию с сайта codeblocks.codecutter.org 
Распакуйте архив. Для работы запускайте файл "CbLancher.exe" (НЕ "codeblocks.exe"!)
  1. Загрузите файлы graphics.h и winbgim.h поместите его в папку компилятора MinGW include (например C:\Program Files\CodeBlocks\MinGW\include)
  2. Загрузите файл libbgi.a  и поместите его в папку lib (C:\Program Files\CodeBlocks\MinGW\lib)
  3. В Code::Blocks откройте Settings >> Compiler and debugger >> Linker settings
  4. Нажмите кнопку Add  в Link libraries и загрузите файл libbgi.a
  5. В правой части (Other linker options) вставьте команды:
  6. -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  7. Нажмите OK


Теперь вы можете скомпилировать проект, используя “graphics.h”. Попробуйте запустить  следующий код:
#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include<math.h>
#include<dos.h>
#include<string.h>
#include<iostream>
#include<ctime>

using namespace std;

int main( void)
{
    //---------- Инициализация графики ----------//
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver,&gmode,"");
    //---------- Конец инициализации -----------//

    setfillstyle(SOLID_FILL,GREEN);
    setcolor(GREEN);
    rectangle(50,50,50+400,50+300);
    floodfill(51,51,GREEN);

    setfillstyle(SOLID_FILL,RED);
    setcolor(RED);
    circle(250,200,100); //круг
    floodfill(240,200,RED);

    //---------- Завершение работы ------------//
    getch();
    closegraph();

return 0;
}

Список функций для работы с графикой


void arc( int x, int y, int stangle, int endangle, int radius ); // дуга
void bar( int left, int top, int right, int bottom ); // закрашенный прямоугольник
void bar3d( int left, int top, int right, int bottom, int depth, int topflag ); // параллелепипед
void circle( int x, int y, int radius ); // круг 
void cleardevice( );  // очистить экран
void drawpoly(int n_points, int* points); // многоугольник 
void ellipse( int x, int y, int stangle, int endangle, int xradius, int yradius ); // эллипс
void fillellipse( int x, int y, int xradius, int yradius ); // закрашенный эллипс
void fillpoly(int n_points, int* points); // закрашенный многоугольник
void floodfill( int x, int y, int border ); // закрасить область, содержащую точку (x,y)
void line( int x1, int y1, int x2, int y2 ); // рисовать отрезок
void linerel( int dx, int dy );
void lineto( int x, int y ); // рисовать линию из текущей точки в заданную
void pieslice( int x, int y, int stangle, int endangle, int radius );
void putpixel( int x, int y, int color ); // нарисовать точку
void rectangle( int left, int top, int right, int bottom ); // прямоугольник
void sector( int x, int y, int stangle, int endangle, int xradius, int yradius ); // сектор

void moverel( int dx, int dy );
void moveto( int x, int y );
void refreshbgi(int left, int top, int right, int bottom);
void refreshallbgi( );
void setbkcolor( int color );
void setcolor( int color ); // установить 
void setfillpattern( char *upattern, int color );
void setfillstyle( int pattern, int color );
void setlinestyle( int linestyle, unsigned upattern, int thickness );
void setrefreshingbgi(bool value);
void setviewport( int left, int top, int right, int bottom, int clip );
void setwritemode( int mode );

3 комментария:

  1. я скачал code blocks по вашей ссылке, библиотеки скачал, все хорошо, только не могу разобраться в старом коуд блоксе: проект создал, а окна для написание кода нет. Вернее оно есть только написать там ничего не могу, просто серый экран. Очень буду рад помощи. Заранее спасибо:)

    ОтветитьУдалить
  2. К сожалению у меня ничего не вышло. Компилятор вежливо извинился: sorry, unimplemented: 64-bit mode not compiled in -- извините, не реализовано: 64-битный режим не компилируется в

    ОтветитьУдалить