Banner Access
Tekst informacyjny o polityce Cookies Close   
BraColSysBmp wielkość: 57 KB. Status: free

Bitmapa - wykaz kolorów systemowych Windows.

  1. Dla każdego koloru tworzona jest bitmapa pomalowana pobranym kolorem systemowym Windows.
  2. Każda bitmapa jest zapisywana w katalogu KatalogBazy/SysColBmp/Element_NrKoloru.bmp
  3. Kolory systemowe (bitmapy) wyświetlane są na formularzu wraz z opisem koloru.
UWAGA:
  • Wymagane jest odwołanie do biblioteki OLE Automation.
separator
BraBmp2Disk wielkość: 135 KB. Status: free

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.
  1. Zapisuje osadzoną w kontrolce Image1 24-bitową bitmapę na dysk, bez pośrednictwa Schowka i tworzenia plików przejściowych.
  2. Bitmapa zostaje zapisaną w katalogu Tmp i ładowana do drugiej kontrolki Image2.
  3. Podczas zamknięciu formularza bitmapa jest usuwana z dysku.
UWAGA:
  • Wymagane jest odwołanie do biblioteki OLE Automation.
separator
BraOleToDisk wielkość: 39 KB. Status: free

Zapis na dysk Pakietu OLE ze związanej i niezwiązanej ramki obiektu.

  1. Kopiuje obiekt OLE do tablicy.
  2. Odczytuje strukturę OBJECTHEADER i OLEHEADER i pobiera potrzebne dane do odnalezienia początku właściwego pliku.
  3. Zapisuje tylko właściwe dla pliku dane na dysk w folderze Tmp pod oryginalną nazwą poprzedzoną znakiem ~  z właściwym dla pliku rozszerzeniem.
  4. Nie jest wymagane odwołanie do OLE Automation.
UWAGA:
  • Obsługuje tylko i wyłącznie osadzone Pakiety OLE (Package).
  • Struktura obiektu OLE została odczytana częściowo doświadczalnie.
separator
BraPBrushToDisk wielkość: 88 KB. Status: free

Zapis bitmapy osadzonej w związanej lub niezwiązanej ramce OLE lub formancie IMAGE na dysk bez zmiany palety barw (głębi kolorów).

  1. Bitmapa osadzona w związanej lub niezwiązane ramce OLE zapisywana jest na dysk.
  2. Po zapisaniu bitmapa kopiowana jest z ramki OLE do formantu Image.
  3. Bitmapa osadzona w formancie Image zapisywana jest bezpośrednio na dysk.
  4. Nie jest wymagane odwołanie do OLE Automation.
UWAGA:
  • W formancie OLE i Image musi znajdować się bitmapa osadzona jako obiekt PBrush - (Obraz-mapa bitowa; Obraz Paintbrush).

BraMarkMapAPI wielkość: 483 KB. Status: free

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:

  1. 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
  2. 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.
  3. 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.
  4. 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.
  5. 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:
  1. jest to wersja testowa i nieuniknione jest występowanie w tej wersji błędów ;-)
  2. 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.
  3. 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
  4. 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)
  5. 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ć.
  6. 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.
  7. 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.
  8. kod napisany jest trochę nadmiarowo, pozostawiłem niektóre funkcje, które mogą przydać się później w trakcie rozwijania projektu.
  9. nie jestem pewien, czy wszystkie powiaty zostały zaznaczone na mapie Polski, a także czy ich lokalizacja jest zgodna z aktualną mapą Polski.
separator
BraChart wielkość: 89 KB. Status: free.

Własne dwu- i trójwymiarowe wykresy słupkowe.

  1. Przedstawia dane procentowe w postaci wykresów słupkowych.
  2. Możliwa jest zmiana kolorów ścian słupków wykresu i jego krawędzi.
  3. Wykres może być proporcjonalnie przeskalowany do innych rozmiarów, ale zawsze. Tryb wymiarowania = "Powiększ" oraz Wyrównanie rysunku = "Lewe górne".
  4. Do wyboru są dwa typy wykresów: słupek 2D i słupek 3D.
  5. Nad słupkiem wpisywana jest wartość procentowa, a pod słupkiem tytuł etykiety formantu ( z ograniczeniami wynikającymi z pkt. 2 Uwag).
  6. Nie jest wymagane dołączanie jakichkolwiek bibliotek.
UWAGA:
  • Wszystkie obiekty graficzne muszą być zapisane jako 24-bitowa bitmapa.
  • Obsługiwane są cyfry 1,2,3,4,5,6,7,8,9,0 oraz litery A,B,C - (bez rozróżniania wielkości liter). W przypadku użycia innych liter zamieniane są one na literę "A". W tekście nie jest obsługiwany przecinek "," .
  • Wskazane jest, aby bitmapa w kontrolce Image nie była skalowana, ponieważ przy drobnych szczegółach występują pewne zniekształcenia obrazu.
separator
BraLongToRGB wielkość: 30 KB. Status: free

Konwersja wartości liczbowej koloru na składowe RGB.

  1. Konwertuje liczbę Long z zakresu od 0 do 16777215 na składowe RGB.
  2. Konwertuje składowe RGB na wartość liczbową Long - odpowiednik funkcji Accessa:
    lColor = RGB(Red, Green, Blue)
  3. Graficzna prezentacja kolorów składowych RGB oraz koloru będącego sumą poszczególnych składowych RGB.
  4. Konwertuje domyślny (systemowy) kolor formularza np. (-2147483633) na składowe RGB i wartość liczbową koloru, jako sumę składowych RGB.
separator
BraTranspBMP wielkość: 39 KB. Status: free

Pseudoprzezroczysta bitmapa, kolorowy pseudotekst, własny wskaźnik postępu na przycisku.

  1. Pseudoprzezroczysta bitmapa - kolor pierwszego piksela bitmapy jest traktowany jako kolor "przezroczysty" i jest zastępowany w całej bitmapie systemowym kolorem przycisku, co sprawia wrażenie, że cała bitmapa jest przezroczysta.
  2. Kolorowy pseudotekst - każdy znak tekstowy na oryginalnej bitmapie pomalowany jest na inny kolor. Tablica kolorów do zamiany zawiera kolejno pary kolorów:
    kolor oryginalny znaku tekstowego i kolor docelowy znaku tekstowego.
  3. Dowolny prostokątny obszar bitmapy można pokazać jako:
    • pseudoprzezroczysty - zamiennie pokazywany jest lewy lub prawy obrazek.
    • wypełniony kolorem - pokazywany jest własny wskaźnik postępu na przycisku.
UWAGA:
  • Każda bitmapa musi być zapisana z 24-bitową głębią kolorów.
separator
BraBmpToModule wielkość: 34 KB. Status: free

Dynamiczna zmiana bitmapy na przycisku.

  1. Metoda I
    • zapis bajtów bitmapy w module w postaci tablicy typu String.
    • każdy element tablicy zawiera 400 bajtów pliku w postaci stringu, co daje 800 znaków w linii, gdyż każdy bajt zapisywany jest formacie Hex.
    • metoda ta przeznaczona jest do niewielkich bitmap - najlepiej 16x16 pikseli lub 32x32 piksele. Przy zbyt dużych rozmiarach przekroczony zostanie limit wielkości modułu. Bitmapa o 24-bitowej głębi kolorów i wymiarach 64x128 pikseli jest dość dobrze zapisywana do modułu.
      Przykładowo bitmapa 184x184 - zajmuje w module 254 linijek po 800 znaków.
      Dla *.bmp 185x185 występował błąd Err.Number = 6 "Przepełnienie" - spowodowany przekroczeniem dopuszczalnego rozmiaru modułu.
    • Należy dodać, że bitmapy przycisków Accessa zapisywane są max. z 8-bitową głębią, więc i ich rozmiary są zdecydowanie mniejsze.
    • zmiana bitmapy przycisku odbywa się za pośrednictwem tablicy typu Byte.
  2. Metoda II
    • bezpośredni zapis bitmap przycisku do tabeli w polu typu OLE
    • zmiana bitmapy przycisku odbywa się za pośrednictwem zmiennej typu Variant
separator
BraScrollBmp wielkość: 595 KB. Status: free

Powiększanie i przewijanie bitmapy w formancie Image (do 40 MB)

  1. Prawidłowo obsługiwana jest 24-bitowa bitmapa do 40 MB wielkości. Powyżej tej wartości w niewielkim zakresie błędnie wskazywane jest powiększenie bitmapy
  2. Udało mi się załadować bitmapę wielkości  200 MB, którą można było w miarę prawidłowo powiększać i przewijać (System po restarcie, by zwolnić pamięć).
  3. Nieprawidłowości wskazywania powiększenia mogą wynikać z nieprawidłowego działania funkcji StretchBlt (bitmapa pojawia się początkowo jako czarny obraz), ale po zmianie skali odwzorowania obraz zostaje przywrócony i poprawnie się skaluje (powiększenie nie działa w granicach od 100 do ~120). Może to być oczywiście jakieś mój błąd, którego nie mogę znaleźć pomimo usilnych starań ;-(
  4. Skala powiększenia jest umowna 100 odpowiada wartości powiększenia, gdy bitmapa jest widoczna w całości (Fit to Window)
separator
BraBmpBlending wielkość: 524 KB. Status: free

Wzajemne przenikanie się bitmap o takich samych rozmiarach.

  1. Obydwie bitmapy bezwzględnie muszą mieć takie same wymiary.