Tak, mam to na samej górze pliku
– Dodane 14.12.2010 (Wt) 21:54 –
I co mam teraz z tym zrobić, żeby się wreszcie skompilował?
– Dodane 25.12.2010 (So) 19:31 –
Niech ten post będzie odświeżającym temat.
Generalnie mój problem polega na tym, że muszę napisać funkcję pobierającą kolor danego piksela na ekranie, po czym mam porównać ten kolor z innym i jeśli będą różne to ten stary kolor mam zamienić na nowy.
Rysunek::Rysunek(const char* nazwaPliku, int szerokosc, int wysokosc, kolor tlo)
: cx(szerokosc), cy(wysokosc)
{
this->nazwaPliku = new char[strlen(nazwaPliku)+1];
strcpy(this->nazwaPliku, nazwaPliku);
this->bmp = new RGBTRIPLE[cx*cy];
for (int i=0; i
}
Jakby się ktoś zastanawiał czym jest RGBTRIPLE:
struct RGBTRIPLE
{
RGBTRIPLE(BYTE R, BYTE G, BYTE B) {r=R; g=G; b=B;}
RGBTRIPLE() { }
BYTE b, g, r;
friend bool operator==(RGBTRIPLE x, RGBTRIPLE y)
{
if(x.r == y.r && x.g == y.g && x.b == y.b) return true;
else return false;
}
};
Metoda odpowiedzialna za postawienie piksela o danym kolorze:
void Rysunek::punkt(int x, int y, kolor k)
{
if (x >= 0 && x < cx && y >= 0 && y < cy)
bmp[y*cx+x] = k;
}
Teraz chciałbym mieć metodę zwracającą kolor piksela o zadanych współrzędnych.
kolor Rysunek::piksel(int x, int y)
{
return bmp[xy-(x-1)*y-(x-1)*(y-1)]; //ale to nie działa
}
I wykorzystać ją w następującej metodzie klasy Logo:
void Logo::wypelnij(int x, int y, kolor kDocelowy)
{
if(!( /*tutaj chcę się odwołać do metody Rysunek::piksel(x,y) */ ==kDocelowy))
{
rys->punkt(x,y,kDocelowy);
wypelnij(x-1,y,kDocelowy);
wypelnij(x+1,y,kDocelowy);
wypelnij(x,y+1,kDocelowy);
wypelnij(x,y-1,kDocelowy);
}
}
Proszę o pomoc, siedzę nad tym problemem już dobre 2 tygodnie…