Zapis 24-bitowej bitmapy bezpośrednio na dysk.
Jest to wątek uboczny
BraMarkMapAPI (a raczej pierwowzoru tego przykładu), gdzie dodatkowo dodałem opcję zapisu bitmapy na dysk. Tutaj przedstawiam zapis bitmapy na dysk, jako całościowe rozwiązanie.
- Zapisuje osadzoną w kontrolce Image1 24-bitową bitmapę na dysk, bez pośrednictwa Schowka i tworzenia plików przejściowych.
- Bitmapa zostaje zapisaną w katalogu Tmp i ładowana do drugiej kontrolki Image2.
- Podczas zamknięciu formularza bitmapa jest usuwana z dysku.
- UWAGA:
- Wymagane jest odwołanie do biblioteki OLE Automation.
Wstawianie graficzno-tekstowego znacznika w określonym punkcie mapy, rozpoznawanie obszaru i znaczników, nad którym znajduje się wskaźnik myszy oraz wymuszenie reakcji pola tekstowego znacznika na kliknięcie.
Dowolne powiększanie mapy, bez zmiany rozmiaru znacznika.
Jest to dalsza kontynuacja tematu "Malowanie na mapie Polski" przedstawionego w usuniętym już przykładzie BraMarkMap.
Do dyspozycji mamy mapę Polski z zaznaczonymi granicami województw i powiatów. Na mapie możemy namalować 20 różnego kształtu
znaczników w 6-ciu zestawach kolorystycznych (kolor obramowania, tła i tekstu). Zestawy kolorystyczna można sobie we własnym zakresie zmodyfikować.
Znacznik automatycznie dopasowuje swoją wielkość do wpisanego tekstu.
Krótki opis możliwych opcji:
- Ramka: Znacznik:
- Identyfikacja - w trakcie ruchu wskaźnika myszy nad obszarem mapy pojawia się ToolTips zawierającą aktualną pozycję wskaźnika myszy oraz nazwę województwa i powiatu pod wskaźnikiem.
Gdy wskaźnik znajdzie się nad aktywnym obszarem tekstu znacznika, ToolTips zawierać będzie ID i nazwę Dostawcy. Jeżeli pod wskaźnikiem myszy znajdzie się kilka znaczników zostaną one zidentyfikowane wszystkie. Kliknięcie w aktywny obszar znacznika powoduje otwarcie formularza "Info".
- Wstaw - kliknięcie na mapie skutkuje wstawieniem znacznika dla bieżącego rekordu podformularza i zaktualizowanie danych X;Y.
Umożliwia to korekcję położenia znacznika po aktualizacji nowego rekordu w podformularzu, gdyż znacznik wstawiany jest w domyślnym miejscu X;Y powiatu.
- Powiększ/Przywróć - po wciśnięciu lewego przycisku myszy nad mapą i przesuwaniu myszy pojawia się zmieniająca rozmiar ramka obszaru powiększania.
Po puszczeniu lewego przycisku zaznaczony region zostaje proporcjonalnie powiększony, ale znaczniki pozostają w swojej naturalnej wielkości. Umożliwia to precyzyjne umiejscowienie znaczników na mapie.
Aby przesunąć obszar powiększania należy wcisnąć prawy przycisk myszy (przy wciśniętym lewym przycisku) i zmienić położenie myszy.
Jeżeli chcemy zrezygnować z powiększania obszaru, musimy zminimalizować wielkość obszaru powiększania do mniejszego niż 20 x 20 pikseli. Obszar taki nie jest powiększany.
Po wykonaniu operacji powiększenia etykieta zmienia nazwę na "Przywróć".
Po wybraniu tej opcji mapa zostaje wyświetlona w skali 1:1
- Ramka: Obszar
- Województwa - pokazywana jest mapa tylko z granicami województw. Identyfikacja obszaru pod wskaźnikiem dotyczy jedynie nazwy województwa.
- Powiaty - pokazywana jest mapa z widocznymi granicami powiatów. Identyfikacja obszaru pod wskaźnikiem dotyczy nazwy województw i powiatów.
- Ramka: Inne (nie jest to właściwie ramka, ale dwa pola wyboru):
- Pokaż opisy - maluje najpierw nazwy województw i potem znaczniki (przy nałożeniu się znacznika na nazwę województwa znacznik znajduje się nad nazwą.
- Pokaż ramkę - pokazuje ramkę (w kolorze czerwonym) ułatwiającą zorientowanie się gdzie znajduje się znacznik bieżącego rekordu. Środkowym punktem ramki jest współrzędna X;Y znacznika bieżącego rekordu podformularza. Jeżeli jest to nowy rekord to po wypełnieniu cboPowiat ramka pojawia się w domyślnym punkcie X;Y dla powiatu.
- Przyciski:
- Pokaż legendę: - ukrywa niepotrzebne formanty, oblicza rozmiar jaki ma mieć bitmapa potrzebna na utworzenie bitmapy Legendy. Dynamicznie tworzy nową bitmapę z opisem znaczników i kolorów.
- Drukuj- pokazuje na raporcie aktualnie wyświetlaną mapę na formularzu (zachowana jest skala powiększenia) oraz dynamicznie utworzoną Legendę z opisem znaczników i kolorów.
- Formularz "Kolory Użytkownika":
- pozwala dobrać indywidualne kolory województw i powiatów przez Użytkownika (raczej jednak przez projektanta). Po modyfikacji bitmapa musi być zachowana na dysku (nadpisując aktualnie używany plik).
OGRANICZENIA:
- jest to wersja testowa i nieuniknione jest występowanie w tej wersji błędów ;-)
- z powyższego powodu wprowadziłem, moim zdaniem, nieszkodliwe ograniczenie licencyjne, ponieważ projekt ten bardzo mi się podoba i zainteresowany jestem dalszym rozwijaniem tego projektu.
- ze względu na powiększenie obszaru mapy do rozmiarów 612 x 600 pikseli (1 MB) zalecana rozdzielczość monitora powinna być nie mniejsza niż 1024x768
- niektóre znaczniki (zwłaszcza te ze skośnymi bokami) niezbyt dobrze się skalują dla dużych rozmiarów i przy dużej wielkości pióra (pędzla)
- w projekcie skupiłem się przede wszystkim na malowaniu na bitmapach, a nie na zabezpieczeniu się przed występowaniem błędów podczas aktualizacji danych, aczkolwiek wszystkie zauważone błędy starałem się wyeliminować.
- w katalogu "Images" znajdować się muszą trzy pliki 24-bitowych bitmap: (MpPlBase.bmp - bezwzględnie; MpPlDistr.bmp; MpPlProv.bmp - w chwili obecnej) po ok. 1MB każda.
- do pamięci (w tablicach typu Byte) załadowane są dwie bitmapy po ok. 1MB każda:
- bazowa - do identyfikacji powiatów (bezwzględnie wymagane)
- oryginalna bitmapa w celu szybkiego resetowania bitmapy przy zmianie rekordu, a nie wczytywania za każdym razem bitmapy z dysku.
- kod napisany jest trochę nadmiarowo, pozostawiłem niektóre funkcje, które mogą przydać się później w trakcie rozwijania projektu.
- nie jestem pewien, czy wszystkie powiaty zostały zaznaczone na mapie Polski, a także czy ich lokalizacja jest zgodna z aktualną mapą Polski.