#1 2011-04-10 13:33:04

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Lab05

[Musisz być zalogowany, aby przeczytać ukrytą wiadomość]


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

#2 2011-04-10 14:53:56

 ShaguaR

Użytkownik

4245729
Skąd: Oleśnica
Zarejestrowany: 2010-11-29
Posty: 195
Punktów :   

Re: Lab05

jak cos to ja moge wrzucic lab 5-2 bo zostalo mi w nim tylko skalowanie "wykresow" proporcjonalnie do wymiarow okna menu, tylko jeszcze nie wiem jak to zrobic.


Pomogłem ? Daj +
              xDe

http://images.chomikuj.pl/button/sharas.gif

Offline

 

#3 2011-04-10 20:28:31

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Re: Lab05

tak jak to jest w OpenGL środek okna to punkt (0,0) lewy górny róg (-1,1) prawy dolny róg (1,-1) i według tego skalujesz - czyli nie ważne jaki rozmiar okna proporcje są te same. ja właśnie zaczynam się brać za to zadanko. niby wszystko to samo, ale lepiej zrobić to od zera wprowadzając kilka udoskonaleń. chyba się oprę o książkę Visual C++ dla każdego, bo było tam coś podobnego....


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

#4 2011-04-11 11:02:07

 ShaguaR

Użytkownik

4245729
Skąd: Oleśnica
Zarejestrowany: 2010-11-29
Posty: 195
Punktów :   

Re: Lab05

kurde ... sprobowalem wpisac tak jak kisielewicz mi mowil i nie dziala. powiedzial zeby zastosowac funkcje GetClientRect();
czyli bedzie cos takiego:

Kod:

    CRect rc;
    GetClientRect(rc);
    rc.NormalizeRect();

ale mimo wszystko dalej mi to nie dziala
nawet jesli mi wpisze stale

Kod:

    CRect rc;
    GetClientRect(rc);
    rc.bottom = -1;
    rc.top = 1;
    rc.left = -1;
    rc.right = 1;

to i tak nie chula :/
mysle ze powinnien pobierac z mainframe wymiary standardowe okna i na podstawie tego przy pomocy getclientrect skalowac, gdyz z tego co czytalem na necie ta funkcja powieksza "wykresy" (prostokaty) jesli sa zbyt male i ledwo je widac lub pomniejsza je jesli sa za duze i bez skalowania beda wychodzic poza standardowy wymiar okna.

ClientRect to obszar roboczy jakby co :P

Ostatnio edytowany przez ShaguaR (2011-04-11 11:47:58)


Pomogłem ? Daj +
              xDe

http://images.chomikuj.pl/button/sharas.gif

Offline

 

#5 2011-04-11 12:06:16

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Re: Lab05

ja wymyśliłem sobie takie funkcje oraz zmienne typu int w klasie Cpolab52Doc o nazwach szer i wys:

Kod:

void Cpolab52View::MyUpdateView()
{
      Cpolab52Doc* pDoc=GetDocument();
      CRect cr;
      GetWindowRect(cr);
      pDoc->szer=int(cr.Width()/2); //tutaj bierzemy środek okna (ustalenie punktu (0,0)
      pDoc->wys=int(cr.Height()/2);
      pDoc->m_a=m_A;
      pDoc->m_b=m_B;
      pDoc->m_c=m_C;
      pDoc->UpdateAllViews(FALSE);
}

int Cpolab52Doc::X(double x) //x w konwencji OpenGL <-1;1>
{
      return szer+int(x*szer); //dla x<0 będzie na lewo od środka, dla x>0 na prawo
}

int Cpolab52Doc::Y(double y)
{
      return wys-int(y*wys); //dla x<0 będzie w dół od środka, dla x>0 w górę
}

nie sprawdzałem czy dobrze rysuje, bo padłem podczas pisania...

Ostatnio edytowany przez januszs (2011-04-11 12:09:08)


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

#6 2011-04-11 13:27:35

 ShaguaR

Użytkownik

4245729
Skąd: Oleśnica
Zarejestrowany: 2010-11-29
Posty: 195
Punktów :   

Re: Lab05

januszs napisał:

Kod:

CRect cr;
      GetWindowRect(cr);
      pDoc->szer=int(cr.Width()/2);
      pDoc->wys=int(cr.Height()/2);

a probowales to chociaz skompilowac ? bo jesli dobrze pamietam to cos podobnego probowalem i jesli dobrze pamietam to nie mozesz porownywac zmiennej typu int lub double do Rect, gdyz VS kojarzy to tak jakbys chcial porownac zmienna np. m_c do funkcji void np. Oblicz (jesli robiles obliczenia po case'ach).

powinien ci wywalic blad o to ... daj znac jak skompilujesz to czy dziala czy jednak wywallilo ci blad.

Ostatnio edytowany przez ShaguaR (2011-04-11 13:28:29)


Pomogłem ? Daj +
              xDe

http://images.chomikuj.pl/button/sharas.gif

Offline

 

#7 2011-04-11 15:37:19

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Re: Lab05

chodzi ci o metody height i width? w pracy nie mam jak tego sprawdzić. w sumie to ja to pisałem z pamięci i chciałem zrobić skrót. obawiam się, że jednak może się nie skompilować. trzeba by najpierw do zmiennych szer i wys przypisać wartości rc.Width() oraz rc.Height() poprzez rzutowanie na typ int a potem wykonać dzielenie przez 2 i wtedy nie powinno już wywalić błędu...


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

#8 2011-04-11 16:25:55

 ShaguaR

Użytkownik

4245729
Skąd: Oleśnica
Zarejestrowany: 2010-11-29
Posty: 195
Punktów :   

Re: Lab05

a w jaki sposob zrobiles wykresy ?
bo u mnie to dlugie wyszlo i moze ty bedziesz  mial krocej.
ja mam cos takiego:

Kod:

    CString s;
                                                    // TEXT danych
    s.Format(_T("A=%.2lf"),pDoc->m_a);
    pDC->SetTextColor(RGB(255, 0, 0));
    pDC->TextOutW(10,20,s);
    s.Format(_T(" B=%.2lf"),pDoc->m_b);
    pDC->SetTextColor(RGB(0, 125, 5));
    pDC->TextOutW(80,20,s);
                                                    // kolory
    CBrush RED(RGB(250, 25, 5));
    CBrush BLUE(RGB(0, 2, 255));
    CBrush GREEN(RGB(0, 125, 5));
                                                    // wykres danych
    CBrush *pBrush = pDC->SelectObject(&RED);
    pDC->Rectangle(10,    40, 10+pDoc->m_a, 45);
    pDC->SelectObject(&GREEN);
    pDC->Rectangle(10, 50, 10+pDoc->m_b, 55);
    pDC->SelectObject(pBrush);

    if (pDoc->dp==1) {
                                                    // dodawanie
    s.Format(_T("A=%.2lf"),pDoc->m_a);
    pDC->SetTextColor(RGB(255, 0, 0));
    pDC->TextOutW(10,20,s);
    s.Format(_T("+  B=%.2lf"),pDoc->m_b);
    pDC->SetTextColor(RGB(0, 125, 5));
    pDC->TextOutW(80,20,s);
    s.Format(_T("=  %.2lf"),pDoc->m_c);
    pDC->SetTextColor(RGB(0, 2, 255));
    pDC->TextOutW(165,20,s);
                                                    // wykres dodawania
    CBrush *pBrush = pDC->SelectObject(&BLUE);
    pDC->Rectangle(10, 60, 10+pDoc->m_c, 80);
    pDC->SelectObject(pBrush);
    }

itd.
nie bede wrzucal calego bo jest 2x tyle :P


Pomogłem ? Daj +
              xDe

http://images.chomikuj.pl/button/sharas.gif

Offline

 

#9 2011-04-11 19:16:09

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Re: Lab05

jak skończę to wrzucę kod. póki co to muszę się uporać z robotą w domu...
a jak tam idzie ze skalowaniem?
ja chyba zmienię koncepcję tego skalowania...


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

#10 2011-04-11 19:30:16

 ShaguaR

Użytkownik

4245729
Skąd: Oleśnica
Zarejestrowany: 2010-11-29
Posty: 195
Punktów :   

Re: Lab05

nie wiem ... juz tyle probowalem ze nie mam pomyslow.
ja moge miec reszte inaczej to zrobione niz ty, ale to i tak skalowanie powinno dzialac.
jak chcesz to ci moge podeslac rysowanie wykresow bo duzo jest pisania :P
a ze mi sie nudzilo ostatnio to sie bawilem zeby bylo ladnie kolorowo ^-^]


najgorsze ze wszedzie w necie jest ta funkcja zastosowana w visual c++ a tam troszke inaczej on tworzy pliki niz w visual studio, ale i tak nawet jak to przerobilem na VS to niby dziala, ale skalowania jak nibyyyy mialo dzialac tak nie chula ...

Ostatnio edytowany przez ShaguaR (2011-04-11 19:32:47)


Pomogłem ? Daj +
              xDe

http://images.chomikuj.pl/button/sharas.gif

Offline

 

#11 2011-04-11 20:35:20

januszs

Użytkownik

Zarejestrowany: 2010-10-20
Posty: 121
Punktów :   11 

Re: Lab05

[Musisz być zalogowany, aby przeczytać ukrytą wiadomość]

Ostatnio edytowany przez januszs (2011-04-11 23:01:02)


Nie pytajcie po co to robię http://images.chomikuj.pl/button/jsszczytna.gif

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.copernicus.pun.pl