Strona 1 z 1

Wyświetlenie obrazka bmp w PaintBox

Nowy postNapisane: sobota, 10 stycznia 2009, 14:56
przez jabu74 - ekspert
Cześć

Jak wyświetlić obrazek w formacie bmp w PaintBox ? Załóżmy że obrazek nazywa się obraz.bmp i chcę go wyświetlić w PaintBox1. Proszę o procedurkę wyświetlającą oraz usuwającą obrazek.

Pozdrawiam

Re: Wyświetlenie obrazka bmp w PaintBox

Nowy postNapisane: sobota, 10 stycznia 2009, 15:43
przez Corvis
PaintBox ma wlaściowość Canvas na którym możesz rysować polecam :

http://cyfbar.republika.pl/canvas.html

Re: Wyświetlenie obrazka bmp w PaintBox

Nowy postNapisane: sobota, 10 stycznia 2009, 22:07
przez jabu74 - ekspert
Mam kolejny problem. Wyświetlam co 500ms słupki danych i tekst w PaintBox. Chciałem także wyświetlać różne informacje (miniaturowe obrazki) o stanie mojego programu:

Fragment kodu:

Kod: Zaznacz cały
Graphics::TBitmap *BMP = new Graphics::TBitmap();


fragment poniżej powtarza się co 500ms:

Kod: Zaznacz cały
BMP->LoadFromFile(picture);
PaintBox1->Canvas->Draw(100, 175, BMP);


W związku z powyższym pytanie brzmi czy nie należy usuwać BMP przed kolejnym odświeżaniem przez:

Kod: Zaznacz cały
delete BMP;


Ponadto czy lepiej załadować wszystkie obrazki w momencie uruchomienia programu tak by potem nie ładować ciągle od nowa przy pomocy LoadFromFile(). Jednocześnie mogą być wyświetlone 3 obrazki. Każdy ma swoją wersję ON/OFF czyli jest w sumie 6 obrazków.

Re: Wyświetlenie obrazka bmp w PaintBox

Nowy postNapisane: niedziela, 11 stycznia 2009, 10:02
przez Cyfrowy Baron
Jeżeli definiujesz obiekt typu TBitmap jako lokalny, czyli w zdarzeniu to należy go zawsze po wykorzystaniu usuwać. Jeżeli definiujesz jako globalny, to usuwasz tylko przy zamknięciu programu.
Lepiej jest wczytać przy starcie programu grafikę do kliku obiektów typu TBitmap i odrysowywać je po kolei w Canvas, tak będzie szybciej, gdyż pobranie grafiki z pamięci jest szybsze niż z dysku.

Re: Wyświetlenie obrazka bmp w PaintBox

Nowy postNapisane: środa, 14 stycznia 2009, 20:20
przez jabu74 - ekspert
Tak. Zmieniłem właśnie na obiekty globalne i ładuję wszystkie potrzebne obrazki do pamięci po starcie programu. Przy zamykaniu aplikacji usuwam je.

Jeszcze jedna sprawa mam 6 obrazków i zamiast:

Kod: Zaznacz cały
Graphics::TBitmap *BMP1 = new Graphics::TBitmap();
Graphics::TBitmap *BMP2 = new Graphics::TBitmap();.
.
.
Graphics::TBitmap *BMP6 = new Graphics::TBitmap();


chciałem zastąpić to odpowiednią tablicą na 6 obrazków tylko nie wiem jak ? :mrgreen:

Pozdrawiam