1. Biblioteca grafică WinBGIm

Biblioteca grafică WinBGIm se poate descărca de aici:

winbgim.zip

Atenție: pe web găsiți alte variante ale acestei arhive, dar nefuncționale.

Dupa ce descarcati și scoateți fișierele din această arhivă, veți face următoarele lucruri:

  1. Extrageti fisierele graphics.h, winmgim.h si libbgi.a din arhiva.
  2. Copiati fisierele graphics.h si winbgim.h in folderul include din compilatorul MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\include\
  3. Copiati fisierul libbgi.a to in folderul lib al directorului compilatorului MinGW, care se gaseste, cel mai probabil, aici: c:\Program Files\CodeBlocks\MinGW\liub\
  4. In Code::Blocks accesati Settings >> Compiler and debugger >>linker settings
  5. Faceti click pe butonul Add in partea Link libraries, apoi rasfoiti si selectati fisierul libbgi.a
  6. In partea dreapta (adica la Other linker options) scrieti urmatoarele comenzi:
    -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32
  7. Faceti click pe OK.

Descrierea functiilor grafice se gaseste aici:

http://www.cs.colorado.edu/~main/cs1300/doc/bgi/bgi.html

Un exemplu de program de test pentru grafica este aici:

#include <iostream>
#include <graphics.h>
#include <winbgim.h>

int main()
{
  int gd = DETECT, gm;
  initgraph(&gd, &gm, "");

  int x = 320, y = 240, r; 
  for (r = 25; r <= 125; r += 20)
      circle(x, y, r);

  getch();
  closegraph();
  return 0;
}

Daca acesta functioneaza, puteti continua sa folositi orice functie grafica si de lucru cu mouse-ul din biblioteca WinBGIm.

Succes!

2. Exemple de programe grafice

  • Desenarea unei table de șah, folosind doar primitiva grafică line -: la tablă
  • Desenarea graficului unei funcții, folosind doar primitiva grafică line -: la tablă
  • Desenarea unui poligon regulat, a unei stele, folosind doar primitiva grafică line -: la tablă

Presupunem că puteți lucra în modul grafic, pe un ecran cu latime*inaltime pixeli în care coordonatele colțului stânga sus sunt (0, 0), iar ale colțului dreapta-jos sunt (latime-1, inaltime-1). În acest mod grafic, dispuneți de următoarele primitive grafice
o funcție grafică void setcolor(unsigned int c), care stabilește culoarea pentru a desena următoarele linii, până la schimbarea culorii de un alt apel al acestei funcții (inițial se consideră c=0, implicit); c este un cod de culoare, care corespunde unei valori între 0 și 15, de exemplu 0=negru, 1=albastru, 2=roșu etc.
o funcție grafică void setwidth(unsigned int g), care stabilește grosimea (1<=g<=10, implicit g=1) de desenare a următoarelor linii, până la un nou apel al acestei funcții;
o funcție grafică void line(unsigned int x1, unsigned int y1, unsingned int x2, unsigned int y2) care trasează o linie între punctul de coordonate (x1, y1) și cel de coordonate (x2, y2), în culoarea curentă, de grosimea curentă;
o funcție void setfillcolor(unsigned int c), care stabilește culoarea de umplere pentru următoarele apeluri ale funcției fill de mai jos; c este implicit 0 (negru), dar poate fi orice valoarea 0<=c<=15;
o funcție void fill(unsigned int x1, unsigned int x2, unsigned int c), care colorează (prin umplere) în culoarea stabilită de funcția setfillcolor, conturul închis, mărginit de o linie poligonală închisă, având culoarea c. Colorarea începe în punctul de coordonate (x1, y1), care se presupune a fi în interiorul acelei linii poligonale.
(0,30p) Definiți o structură de date adecvată pentru a reprezenta o stea regulată cu un număr de colțuri (cel puțin 3), cu marginea de o anumită culoare și grosime, cu o anumită culoare în interior, cu o anumită mărime și o anumită „deschidere” a colțurilor, cu o anumită amplasare sub un anumit unghi față de orizontală a primului colț. Se pot folosi funcțiile trigonometrice sin și cos, din math.h.
(0,90p) Scrieți o funcție care să deseneze o asemenea stea, oarecare, amplasată oriunde și oricum, de culoare oarecare etc.
Click aici pentru solutie.