Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][GD] klasa do rysowania okien (PCV)
exseerius
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 31.12.2006

Ostrzeżenie: (0%)
-----


Witam,

Mam megaśny problem polegający na napisaniu klasy, która rysowalaby okna (schematy okien do aplikacji sprzedażowej dla klienta).

O tyle, o ile zwykłe namalowanie kwadratu z ramą nie sprawia mi problemu, o tyle ksztalty okien są różne i mają różne parametry i w zależności od tego szkice różnie wygladają (kwadratowe pojedyncze, pojedyncze otwierane, podwójne, podwójne otwierane, półokrągłe, okrągłe, z okrągłym zwieńczeniam, z trójkątnym zwieńczeniem)

Każde okno składa się z ramy i płata otwieranego oraz szkicu w jaki sposób się otwiera (takie linie na szybie w kształcie V).

Zastanawiam się w jaki sposób opisac okno, na chwile obecna wymyśliłem, że okna opisuję i przechowuję w db jako serialize arraya:

  1. 'type' => 'R',
  2. 'corners'=>array(
  3. array(0,0),
  4. array($x1,0),
  5. array($x1,$y1),
  6. array(0,$y1)
  7. )
  8. );



a potem staram sie to parasować (type = R oznacza ze jest to prostokąt, a corners to po kolei, lewy górny, prawy górny, prawy dolny i lewy dolny - wiem że wystaczą tylko dwa cornersy do rysowania prostokata, ale tutaj mam wiecej informacji)

Za X1 i Y1 podstawiane sa rzeczywiste wartosci wpisane przez usera (oczywiscie odpowiednio skalowane).

OK, to by był mój problem, mam pytanie, czu ma ktoś pomysł inny na opisywanie tych okien i sposób parasowania tego do grafiki.

Poniżej przykłady tych prostrzych okienek, pozniej postaram sie dołączyć inne przykłady.

(IMG:http://www.elokaty.home.pl/window_1.png) (IMG:http://www.elokaty.home.pl/window_2.png) (IMG:http://www.elokaty.home.pl/window_3.png) (IMG:http://www.elokaty.home.pl/window_4.png) (IMG:http://www.elokaty.home.pl/window_5.png) (IMG:http://www.elokaty.home.pl/window_6.png) (IMG:http://www.elokaty.home.pl/window_7.png) (IMG:http://www.elokaty.home.pl/window_8.png) (IMG:http://www.elokaty.home.pl/window_9.png) (IMG:http://www.elokaty.home.pl/window_10.png)

Ech widze, że problem jest na tyle zlożony, że malo kogo interesuje a Ci co zerkna nie potrafią pomóc (IMG:style_emoticons/default/tongue.gif) Ni nic, pozostaje walczyć samemu (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
exseerius
post
Post #2





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 31.12.2006

Ostrzeżenie: (0%)
-----


OK, to troche dokładniej i wklejka tego co juz sam napisałem - trochę chaotyczne, ale to z racji na małą ilośc czasu - projekt robię sam więc komentarze dla mnie sa z reguły nieknieczne, podczas refabrykacji sa u mnie dodawane).

Klasa: window.class.zip


Ogólnie na chwile obecna sa tam dwa rodzaje generowania okien (zacząłem piać od nowa, ale starą logikę zostawiłem)

I tak stara wersja wywoływana jest tak:

  1. $window = new Window();
  2. $window->hSizes = array(200,100); // wymiary poszczególnych bloków w poziomie
  3. $window->vSizes = array(30,100); // to co wyżej w pionie
  4. $window->nonfix = array(0,1,0); // definiowanie które okna maja być otwieralne
  5. $window->init();
  6. $window->addDimentionsInfo();
  7. $window->draw();


Nowy sposób działa tak:

  1. $model = serialize(array(
  2. 'type' => 'R',
  3. 'corners' => array(
  4. array(0,0),
  5. array('$x1',0),
  6. array('$x1','$y1'),
  7. array(0,'$y1')
  8. ),
  9. 'open' => array(
  10. 'LU',
  11. 'RU'
  12. )
  13. ),
  14. 'type' => 'R',
  15. 'corners' => array(
  16. array('$x1',0),
  17. array('$x1+$x2',0),
  18. array('$x1+$x2','$y1'),
  19. array('$x1','$y1')
  20. ),
  21. 'open' => array(
  22. 'LU',
  23. 'RU'
  24. )
  25. )
  26. ));
  27.  
  28.  
  29.  
  30. $window = new Window();
  31. $window->Output($model);


$model to oczywiście zapis okna w tabliczy do dalszej obróbki, zastanawia mnie jedynie czy ma ktoś inny sposób na rozwiązannie takiego "modelu".

Wartości podawane przez usera, to typ okna, wysxszerokość poszczególnych bloków, typ otwierania okna - takie dane podawane sa w pierwszym formularzu i na tej podstawie powinien wyrysować się szkic okna. Okienka które podałem w pierwszym poscie wygenerowane są moją klasą (linie oznaczające strony otwarcia okien później dodane w gimpie).

Tutaj przykłady wszystkich mozliwości okien:

(IMG:http://img594.imageshack.us/img594/7083/windws.th.png)

btw. @jaslanin - chętnie pomagałbym innym, natomiast ilość czasu jakim dysponuje nie pozwala mi przesiadywać na forach, a zarejestrowałem sie, aby móc właśnie czasem dopytać o coś czego nie wiem a dla innych to pikuś.

Ten post edytował exseerius 2.06.2010, 12:36:58
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 18:28