CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - LibZPlay - Wykres, słupki, Graph - pytanie.

LibZPlay - Wykres, słupki, Graph - pytanie.

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 11:19

polymorphism napisał(a):A jakiż to string zmieniałeś na inta?
Metodę OpenPictureDialog1>FileName. Kod się skompilował nawet, ale mimo wszystko program pomocniczy zwracał błąd że nie jest to prawidłowy int.
polymorphism napisał(a):TOpenPictureDialog od TOpenDialog różni się tym, że masz podgląd grafiki w trakcie wyboru pliku.
Tak, Dialogi w tym przypadku nie mają znaczenia czy jest to OpenDialog, Czy PictureDialog, z tym że w picture dialog od razu mam zdefiniowane filtry i podgląd rysunku, a w OpenDialog muszę sam to wszystko poustawiać.
polymorphism napisał(a):Swoją drogą ta funkcja jest źle napisana, bo drugi parametr nie powinien być typu int, jeśli przekazywane mają być jakieś uchwyty. W Windowsie uchwyty są typu wskaźnikowego, a int może być (i często jest) 32-bitowy, nawet wtedy gdy kompilacja jest w 64-bitach. Tutaj powinien być typ intptr_t lub nawet windowsowy LONG_PTR (w sumie biblioteka definiuje typ System::IntPtr).
Sama Bblioteka jest przeznaczona na systemy 32bit, Nie jest wspomniane żeby pracować na 64Bitach, więc może Autor biblioteki tak założył, trudno powiedzieć. również pisze w dokumentacji że może zawierać bugi, jak to na licencji Freeware.
Sprawdzę, Podane przykłady zamieszczone w temacie i dam znać co z tego wyszło. Serdecznie dziękuję za poświęcony czas.

Edit:

niestety, twój zamysł nie zadziałał, kompilator zwrócił błąd kompilacji:
KOD cpp:     UKRYJ  
if(BitmapDlg->Execute(Handle))
           {
           std::unique_ptr<TBitmap> TestBmp;
                   TestBmp = std::make_unique<TBitmap>();
                   TestBmp->LoadFromFile(BitmapDlg->FileName);
                   Player->SetFFTGraphParam(gpBgBitmapHandle, static_cast<int>(TestBmp->Handle)); // kompilator zwraca błąd: [bcc32c Error] Unit1.cpp(203): static_cast from 'HBITMAP' (aka 'HBITMAP__ *') to 'int' is not allowed
                                                                                                                                                  // Dopiero kiedy zamienię rzutowanie na reinterpret_cast kod się kompiluje, ale bitmapa nie zostaje załadowana.
             }
       
 
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 13:07

Metodę OpenPictureDialog1>FileName.

Serio? :) Myślałeś, że jak dasz ścieżkę do bitmapy, to StrToInt domyśli się i wypluje z siebie załadowaną bitmapę, choć służy do konwersji liczb w formie tekstowej do wartości typu int?

Sama Bblioteka jest przeznaczona na systemy 32bit,

IMO bezsensowne ograniczenie, bo dobrze napisany kod powinien się kompilować na dwie platformy bez problemu. Biblioteka jest z 2010 roku. wtedy 64-bity nie były żadnym novum.

jak to na licencji Freeware.

Bugi zdarzają się też w sofcie na innych licencjach.

twój zamysł nie zadziałał, kompilator zwrócił błąd kompilacji:

Daj reinterpret_cast (na początku mogłem tak dać, w końcu uchwyt jest wskaźnikiem).

Jeśli dobrze rozumiem sens opcji gpBgBitmapHandle, TestBmp powinna istnieć w trakcie rysowania. W komentarzu napisałem, że ma być polem klasy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 13:37

polymorphism napisał(a):Serio? Myślałeś, że jak dasz ścieżkę do bitmapy, to StrToInt domyśli się i wypluje z siebie załadowaną bitmapę, choć służy do konwersji liczb w formie tekstowej do wartości typu int?
Wiesz co, być może tak właśnie pomyślałem.
polymorphism napisał(a):Daj reinterpret_cast (na początku mogłem tak dać, w końcu uchwyt jest wskaźnikiem).

Jeśli dobrze rozumiem sens opcji gpBgBitmapHandle, TestBmp powinna istnieć w trakcie rysowania. W komentarzu napisałem, że ma być polem klasy.

Ja natomiast rozumiem w ten sposób sens tego ustawienia, że definiuje ona uchwyt okna dialogowego aby móc wybierać gotowe bitmapy i ustawiać je jako tło wykresu, szkoda że nigdzie nie ma przykładu jak wykorzystać te funkcję, bo nie ukrywam, że może być przydatna gdy ktoś, będzie chciał sobie zmienić tło ze standardowego na swój własny customowy.
gpBgBitmapHandle - Set background bitmap.
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 13:51

Przykład do tej opcji jest niepotrzebny, bo jest prosta w użyciu i zrozumieniu. Przejrzałem źródła tej biblioteki i wychodzi na to, że funkcja robi kopię bitmapy podanej w parametrze, więc TestBmp nie musi być polem klasy i może istnieć tylko na czas ustawiania parametru gpBgBitmapHandle.

Ja natomiast rozumiem w ten sposób sens tego ustawienia, że definiuje ona uchwyt okna dialogowego (...)

Chyba nie zrozumiałeś, o czym pisałem... nieważne.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 14:10

polymorphism napisał(a):Przykład do tej opcji jest niepotrzebny, bo jest prosta w użyciu i zrozumieniu. Przejrzałem źródła tej biblioteki i wychodzi na to, że funkcja robi kopię bitmapy podanej w parametrze, więc TestBmp nie musi być polem klasy i może istnieć tylko na czas ustawiania parametru gpBgBitmapHandle.

Ja natomiast rozumiem w ten sposób sens tego ustawienia, że definiuje ona uchwyt okna dialogowego (...)

Chyba nie zrozumiałeś, o czym pisałem... nieważne.

Chyba tak :( jeśli nie sprawiło by to kłopotu dałbyś radę zobrazować w kodzie jak by miało to wyglądać mniej więcej? Będę niezmiernie wdzięczny.
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 14:26

KOD cpp:     UKRYJ  
if (OpenPictureDialog1->Execute()) {
    auto bmp = std::make_unique<TBitmap>();
    bmp->LoadFromFile(OpenPictureDialog1->FileName);
    Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(bmp->Handle));
    Player->SetFFTGraphParam(gpBgBitmapVisible, TRUE);
}
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 14:45

polymorphism napisał(a):
KOD cpp:     UKRYJ  
if (OpenPictureDialog1->Execute()) {
    auto bmp = std::make_unique<TBitmap>();
    bmp->LoadFromFile(OpenPictureDialog1->FileName);
    Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(bmp->Handle));
    Player->SetFFTGraphParam(gpBgBitmapVisible, TRUE);
}

Wpisałem, skompilowałem i, prościej pisząc, klapa, bitmapa nie zostaje załadowana, sprawdzę jeszcze z innym wymiarem, nic z tego.
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 14:51

Zamień kolejnością wywołanie SetFFTGraphParam, może to coś da.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 14:56

polymorphism napisał(a):Zamień kolejnością wywołanie SetFFTGraphParam, może to coś da.

Niestety, próbowałem zamieniać kolejności i nic z tego.
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 15:42

Dziwne. Sprawdź, jakie wartości zwracają wywołania SetFFTGraphParam.

No i żeby znowu się nie okazało, że Player, któremu przypisujesz bitmapę, nie jest tym, który rysuje.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 16:38

polymorphism napisał(a):Dziwne. Sprawdź, jakie wartości zwracają wywołania SetFFTGraphParam.
Ok Sprawdzę.
polymorphism napisał(a):No i żeby znowu się nie okazało, że Player, któremu przypisujesz bitmapę, nie jest tym, który rysuje.
Player jest obiektem biblioteki LibZPlay, jest wywołany funkcją Create Zplay(), w aplikacji pomocniczej żadnych dodatkowych klas nie implementowałem, ponieważ tak jak wspominali użytkownicy z forum pasja informatyki było to bezsensu.

Edit:
TestBmp->Handle zwraca NULL,
Ale, kiedy zamieniłem metodę że najpierw był uchwyt:
KOD cpp:     UKRYJ  
     if(BitmapDlg->Execute())
           {
                auto TestBmp = std::make_unique<TBitmap>();
            Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(TestBmp->Handle)); // teraz TestBmp->Handle zwraca wartości
                        TestBmp->LoadFromFile(BitmapDlg->FileName); //tu tak samo bitmapa jest ładowana do pamięci, ale mimo wszystko ładowany obrazek nie pojawia się na tle wykresu.
       }


Ale kiedy analogicznie zamieniłem w odwrotną stronę:
KOD cpp:     UKRYJ  
     if(BitmapDlg->Execute())
           {
                auto TestBmp = std::make_unique<TBitmap>();
                TestBmp->LoadFromFile(BitmapDlg->FileName); //tu bitmapa jest ładowana do pamięci
                Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(TestBmp->Handle)); // teraz TestBmp->Handle zwraca NULL
       }
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 19:13

Czyli winowajce mamy. Pytanie dlaczego zwraca null, skoro bitmapa się załadowała.

Spróbuj tak:
KOD cpp:     UKRYJ  
auto TestBmp = std::make_unique<TBitmap>();
TestBmp->LoadFromFile(BitmapDlg->FileName);
TestBmp->PixelFormat = pfDevice;
Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(TestBmp->Handle));
Player->SetFFTGraphParam(gpBgBitmapVisible, TRUE);
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 19:38

polymorphism napisał(a):Czyli winowajce mamy. Pytanie dlaczego zwraca null, skoro bitmapa się załadowała.

Spróbuj tak:
KOD cpp:     UKRYJ  
auto TestBmp = std::make_unique<TBitmap>();
TestBmp->LoadFromFile(BitmapDlg->FileName);
BitmapDlg->PixelFormat = pfDevice; // tej metody brakowało, z tym że nie odnosi się ona do OpenPictureDialog a TestBmp obiektu, poprawiłem to i działa.
Player->SetFFTGraphParam(gpBgBitmapHandle, reinterpret_cast<int>(TestBmp->Handle));
Player->SetFFTGraphParam(gpBgBitmapVisible, TRUE);

Byłem Blisko wykminienia dlaczego to nie działa. Brakowało metody jak napisałeś, w sumie nawet sam pisałem metodę PixelFormat, ale nie zdawałem sobie sprawy że potrzeba ustawić wartość pfDevice. Reszta działa jak trzeba, Obrazki ładują się prawidłowo.
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez polymorphism » wtorek, 22 października 2019, 19:42

A tak, błąd popełniłem, powinno być oczywiście TestBmp zamiast BitmapDlg. W sumie nie wiem, dlaczego to tam się znalazło :/

Z ciekawości: plik .bmp ładowałeś, czy coś innego?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    UbuntuFirefox

Re: LibZPlay - Wykres, słupki, Graph - pytanie.

Nowy postprzez Peter_M » wtorek, 22 października 2019, 21:42

A to nie szkodzi, każdemu może się zdarzyć, nie mniej jednak bardzo mi pomogłeś, w rozwiązaniu zagadki tego parametru. Wszystko działa, okodowałem cały graph z jego opcjami i wszystko działa zgodnie z przeznaczeniem. Teraz kod z aplikacji pomocniczej przepiszę do aplikacji natywnej jako następny build modyfikując nazwy obiektów(zmiennych). Jeszcze raz bardzo dziękuję za naprowadzenie mnie na właściwy tor. Pozdrawiam Serdecznie!
Avatar użytkownika
Peter_M
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): poniedziałek, 3 grudnia 2018, 23:36
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: RAD Studio 10.3.2
SKYPE: pikus_666
Gadu Gadu: 68554272
    WindowsChrome

Poprzednia strona

  • 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 1 gość

cron