RozciÄ…gane (skalowane) "warstwy"

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez nie_ogarniam » poniedziaÅ‚ek, 11 czerwca 2012, 22:48

Witam,
ProszÄ™ o kilka porad.
Problem przedstawia się następująco: czym najlepiej stworzyć pewne ograniczone pole w którym są dwie warstwy (w orientacji poziomej) a po kliknięciu na granice pomiędzy nimi można było zmieniać ich wysokość (kiedy jedną zostanie zmniejszona, druga zostaje zwiększona o tyle samo)? Nie chodzi mi o nic skomplikowanego (np dwa buttony/panele koło siebie - takie mam pomysły ale jak na razie nie udaje mi się tego słusznie oprogramować w ten sposób). Jakimi komponentami się posłużyć w tym przypadku. Ponadto, co jest najważniejsze, chciałbym móc w czasie rzeczywistym, w trakcie skalowana warstw mieć dostęp do aktualnych wysokości tych warstw (tak by jednoczenie dynamicznie zmieniał się wykres do którego kreślenia wykorzystywane są owe wysokości).

Proszę o rady czego mógłbym użyć do takich celów.. będę wdzięczny za wszelkie sugestie.

Pozdrawiam
Avatar użytkownika
nie_ogarniam
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): poniedziałek, 11 czerwca 2012, 21:00
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Chrome

Re: RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez Cyfrowy Baron » wtorek, 12 czerwca 2012, 00:06

A czymże są te warstwy? Czy to jakieś obiekty? Jakie?
Napisz to tak by inni zrozumieli o co Tobie chodzi.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez nie_ogarniam » wtorek, 12 czerwca 2012, 10:02

Warstwy maja przedstawiać warstwy skalne, których wysokość (miąższość) można kursorem zmieniać ale w ograniczonej głębokości. I szkopuł polega na tym by w trakcie przeciągania (zmiany wysokości) dana wartość wysokości zmieniała się (gdzieś) dynamicznie tak by np. na PaintBox'ie na bieżąco wykorzystywać tą zmieniającą się wartość (repaint()?).
Pomyślałem, że może da się to zrobić dając jakiś prosty komponent i zmieniając jego rozmiar pobierać wartość height...

Nie chodzi mi o nic skomplikowanego.
Avatar użytkownika
nie_ogarniam
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): poniedziałek, 11 czerwca 2012, 21:00
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows XPChrome

Re: RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez Cyfrowy Baron » wtorek, 12 czerwca 2012, 10:45

Twój opis niewiele mi mówi. Pokaż jakiś kod realizujący te tzw. warstwy. Warstwy są mi znane z Photoshopa, ale to tylko graficzna interpretacja kodu. Żaden komponent w C++Builder nie obsługuje warstw, czyli jednej grafiki nakładającej się na drugą. Niezależnie od tego jakiego komponentu użyjesz, czy to będzie np. TPaintBox czy TImage, to i tak rysowanie będzie odbywało się po TCanvas, która to klasa udostępnia tylko zbiór narzędzi do rysowania i w żadnym razie warstw nie udostępnia. Warstwy można zrobić np w ten sposób, że przechowujesz w pamięci dwie grafiki np w formie bitmap, a łączysz je w jedną grafikę na TPaintBox lub na TImage. Dane o grafikach pobierasz z bitmap, a nie z tego co zostało narysowane na PaintBox.

nie_ogarniam napisał(a):czym najlepiej stworzyć pewne ograniczone pole w którym są dwie warstwy (w orientacji poziomej) a po kliknięciu na granice pomiędzy nimi można było zmieniać ich wysokość (kiedy jedną zostanie zmniejszona, druga zostaje zwiększona o tyle samo)?


Dwie warstwy w orientacji poziomej? Co to ma być? Warstwy to np. dwa obiekty nałożone jeden na drugi, jeżeli jednak coś znajduje się obok siebie to nie są to warstwy lecz dwa obiekty obok siebie. Jak zmieniać ich rozmiar? Umieść na formularzu obiekt Panel, na nim umieść np. dwa obiekty Image1 i Image2. Dla Image2 właściwość Align ustaw na alBottom a dla Image1 Align ustaw na alClient. Umieść między nimi obiekt Spliter1 wrzucając go po prostu an Panel1 i ustawiając właściwość Aling na alBottom. Spliter powinien automatycznie umieścić się między obiektami Image.

Nie wiem czy o to Tobie chodzi, ale tak ciebie zrozumiałem. W załączniku masz program w którym możesz zobaczyć jak to działa.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
nie_ogarniam
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez nie_ogarniam » wtorek, 12 czerwca 2012, 19:13

Baronie, bardzo dziękuje za odpowiedź, właśnie chodziło mi o taką funkcjonalność jak w załączniku od Ciebie.

Poustawiałem wszystko tak jak napisałeś (na kilku "warstwach") i wszystko działa świetnie - z tym że zamiast Image użyłem Shape.
Bez problemu mogę pobierać na bieżąco wartości parametru wysokości Shapów po ustawieniu na Splitterze ResizeStyle=rsUpdate, np.
Kod: Zaznacz cały
Memo2->Text = Shape1->Height;
wartość zmienia się automatycznie także myślę że nie będzie problemu oprogramować to tak jak chce (dla rysowania wykresu).

O taką poradę mi chodziło, dziękuje.
Avatar użytkownika
nie_ogarniam
Bladawiec
Bladawiec
 
Posty: 3
Dołączył(a): poniedziałek, 11 czerwca 2012, 21:00
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Chrome

Re: RozciÄ…gane (skalowane) "warstwy"

Nowy postprzez Cyfrowy Baron » wtorek, 12 czerwca 2012, 23:44

Świetnie, tylko nie nazywaj obiektów warstwami bo wprowadzasz w błąd...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron