W załączniku umieściłem vi z tematu. Ma ona za zadanie zastąpić część bitmapy tła inną bitmapą. Niestety vi dosyć długo się wykonuje dla obrazu tła:1500x1500 pikseli i wklejaniu obrazka 20x20 pikseli to 400 ms (co prawda pracuje na starym (2-3 lata) komputerze ). Więc pytam:
1. Czy może można poprawić szybkość wykonywania tego vi?
2. Generalnie chodzi o efekt umieszczenia grafiki na innej grafice więc może da się to zrobić (np: korzystając z warstw rysowani, jeżeli takie coś istnieje)
Dodaje że chciałbym to osiągnąć korzystając z LV 2010 PDS raczej bez dodatkowych narzędzi.
P.S. Dodałem jeszcze drugą wersje szybszą o jakieś 10% (ala nadal zbyt wolną)
Poprawa szybkości vi wklejającego bitmapę na bitmapie.
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Poprawa szybkości vi wklejającego bitmapę na bitmapie.
- Załączniki
-
- draw image on background image_v2.vi
- wersja druga
- (27.31 KiB) Pobrany 343 razy
-
- draw image on background image.vi
- (24.99 KiB) Pobrany 343 razy
- smiga
- Administrator
- Posty: 799
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2016
- Lokalizacja: Słupsk
Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.
Zacznijmy od tego: bawisz się sporymi tablicami - skorzystaj z In Place Element Structure.
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.
Dzięki za trafną uwaga smiga, a już traciłem wiarę w LV i chciałem się przesiąść na VC#.
Oczywiście coś robiłem od rana, więc w związku z ty okazało się że lwią część pracy dla mojego vi zapewniają operację "flatten pixmap.vi" i "unflatten pixmap.vi". Tak wiec gdzie tylko się da tam je usunąłem tak aby pracować na samej tablicy RGB. Oczywiście pozostaje jeszcze wyrysowanie tablicy RGB w kontrolce "picture" co za sprawą "draw unflatten pixmap.vi" też zajmuje sporo czasu.
Jak widzę oryginalne bloczki LV manipulują na samej kontrolce "picture" i dobrze (szybko) im to wychodzi, może by słusznie było wiec podążać taką samą drogą...ciekawe czy to możliwe w rozsądnym czasie...sprawdzę.
Oczywiście vi z tematu wątku jest częścią większej aplikacji gdzie są prezentowane wyniki jego ciężkiej pracy.
Pozdrawiam
Andrzej
Oczywiście coś robiłem od rana, więc w związku z ty okazało się że lwią część pracy dla mojego vi zapewniają operację "flatten pixmap.vi" i "unflatten pixmap.vi". Tak wiec gdzie tylko się da tam je usunąłem tak aby pracować na samej tablicy RGB. Oczywiście pozostaje jeszcze wyrysowanie tablicy RGB w kontrolce "picture" co za sprawą "draw unflatten pixmap.vi" też zajmuje sporo czasu.
Jak widzę oryginalne bloczki LV manipulują na samej kontrolce "picture" i dobrze (szybko) im to wychodzi, może by słusznie było wiec podążać taką samą drogą...ciekawe czy to możliwe w rozsądnym czasie...sprawdzę.
Oczywiście vi z tematu wątku jest częścią większej aplikacji gdzie są prezentowane wyniki jego ciężkiej pracy.
Pozdrawiam
Andrzej
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.
Trochę pokombinowałem i uzyskałem vi wklejając bitmapę z wykorzystaniem „In place ement modyfi”. Działa on z zadawalającą wydajnością. Jak wcześniej jednak napisałem najwięcej czas zajmuje „przeładowanie” obrazu do kontrolki „picture”.
Tak więc zrezygnowałem z operacji bezpośrednio na bitmapie tła (potencjalnie dużej np: 1000x100 pixeli). Teraz rysuje w kontrolce „picture” piksel za pomocą „Draw Point.vi” i działa to całkiem nieźle.
Rozwiązanie to jest w moim odczuci łopatologiczne, chętnie zrobił bym to lepiej, ale nie wiem i nie mam czasu zgłębić tajemnicy działania kontrolki „picture” (czy jest to udokumentowane? A może po prostu się nie da.)
Jedyny poważnym mankament tego rozwiązania to taki że gdy zrobi się zoom większy od 100% kontrolki „picture” to pomiędzy pikselami wklejonego obrazka powstaje widoczna linia siatki (mimo że pen jest ustawiony na size=1 style=solid).
Zapraszam wszystkich chętnych do krytyki...
Tak więc zrezygnowałem z operacji bezpośrednio na bitmapie tła (potencjalnie dużej np: 1000x100 pixeli). Teraz rysuje w kontrolce „picture” piksel za pomocą „Draw Point.vi” i działa to całkiem nieźle.
Rozwiązanie to jest w moim odczuci łopatologiczne, chętnie zrobił bym to lepiej, ale nie wiem i nie mam czasu zgłębić tajemnicy działania kontrolki „picture” (czy jest to udokumentowane? A może po prostu się nie da.)
Jedyny poważnym mankament tego rozwiązania to taki że gdy zrobi się zoom większy od 100% kontrolki „picture” to pomiędzy pikselami wklejonego obrazka powstaje widoczna linia siatki (mimo że pen jest ustawiony na size=1 style=solid).
Zapraszam wszystkich chętnych do krytyki...
- Załączniki
-
- draw image on background image_v4.vi
- vi rysyjące bitmapę punkt po punkcie
- (18.96 KiB) Pobrany 340 razy