Płynne skalowanie rysunku na canvie

0

Witam.
Mam tabelę ze współrzędnymi i mapę bitową w pamięci, po której sobie rysuję.
Potem tą mapę przepisuję na CANVAS bodajże IMAGE'a.

Chcę zrobić płynne skalowanie przy pomocy scrolla. Program działa ale skalowaniu daleko do ideału. Przykładowo w innych aplikacjach kręcąc szybko kółkiem, skalowanie jest bardzo szybkie i odwrotnie.

Dodatkowo trzymając kursor w obrębie rysunku, skalowanie "zmierza" do tego punktu. U mnie rysuje zawsze od punku 0,0 canvy. Pomijam już fakt, że przy dużej ilości współrzędnych widzę migotanie rysunku. Po części zlikwidowałem to wykorzystując DELPHIX, ale nie mogę nigdzie znaleźć przykładu podobnej aplikacji.

Czy ktoś ma przykład aplikacji, z płynnym scrollowym skalowaniem ?!

Pozdrawiam
Piotr

0

migotanie sie rozwiazuje zwyklym doublebuffered:=true.
nie potrzebujesz delphiX.
co do skalowania pod kursorem... musisz pomyslec troche. z reszta jakis czas temu byl na forum podobny temat, poszukaj.

ravender12345 napisał(a)

[...]Potem tą mapę przepisuję na CANVAS bodajże IMAGE'a.

bodajże? to co Ty sam nie wiesz? ;]

ravender12345 napisał(a)

Przykładowo w innych aplikacjach kręcąc szybko kółkiem, skalowanie jest bardzo szybkie i odwrotnie.[...]

nie lapie tego zdania... co jest odwrotnie? ;]

0

Przykładowo w innych aplikacjach kręcąc szybko kółkiem, skalowanie jest bardzo szybkie i odwrotnie.
nie lapie tego zdania... co jest odwrotnie?
Zdanie jest proste. Skoro skalowanie kręci kółkiem, i robi to szybko, wtedy jest szybkie. "Odwrotnie" oznacza że kiedy skalowanie kręci kółkiem powoli, robi się powolne.

0

Obsłuż Eventa MouseWheelUP itd.
Możesz dać stałą wartość dla danego kroku, i tak jak szybciej ruszysz to wykona więcej w krótszym czasie co wyda się szybsze.
Sam skalowanie możesz wykonać w pamięci na samych wartościach i przerysowywać scanline'm.
DirectX mógłby być rozwiązaniem, ale to też będzie wymagać od Ciebie trochę wysiłku i pewnie sprego zmieniania Twojego programu, pomyśl czy jest sens wszystko zmieniać dla jednego efektu.
Od biedy możesz wrzucić PictureBoxa z AutoSize przy wczytaniu a potem zmieniać mu wymiary ze Strech'em.

0
Azarien napisał(a)

Przykładowo w innych aplikacjach kręcąc szybko kółkiem, skalowanie jest bardzo szybkie i odwrotnie.
nie lapie tego zdania... co jest odwrotnie?
Zdanie jest proste. Skoro skalowanie kręci kółkiem, i robi to szybko, wtedy jest szybkie. "Odwrotnie" oznacza że kiedy skalowanie kręci kółkiem powoli, robi się powolne.

no to jest zbyt logiczne.... ;]
ja zrozumialem ze chodzi o to ze skalowanie ma byc jak najszybsze, w czasie rzeczywistym, bez opoznien.
wiadomo, ze jak sie bedzie krecic wolniej to i skalowanie bedzie rzadsze, napiszanie o tym mnie zmylilo.

0

Czyli nie ma jakiegoś "gotowego" sposobu na grafikę wektorową?

Całe skalowanie muszę przeliczać sam ?! :(. Dobrze, ze mam książke jeszcze z czasów Basica o grafice. Mnóstwo opisanej matematyki właśnie na takie przypadki ale mówie, zapytam. Może nie trzeba wymyślać czegoś, co już zostało wymyślone

1 użytkowników online, w tym zalogowanych: 0, gości: 1