CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Obraz bmp jako tło Form1

Obraz bmp jako tło Form1

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Obraz bmp jako tło Form1

Nowy postprzez Arnold_S » sobota, 19 sierpnia 2017, 17:50

Witam!
Chciałbym "wtopić" w tło formy obraz w formacie bmp. Próbowałem zrobić to według przepisu podanego poniżej ale nie bardzo chce działać.
http://programowanie.cal.pl/cyfbar/grafika.html#graf7

W kodzie który jest na stronie zamieniłem Image1 na Form1, tak jak poniżej:
KOD cpp:     UKRYJ  
void __fastcall TForm1::FormShow(TObject *Sender)
{
  bmp = new Graphics::TBitmap;
  bmp->LoadFromFile("nazwa_pliku");

  Form1->Canvas->Brush->Bitmap = bmp;
  Form1->Canvas->FillRect(Rect(0,0,Width,Height));
}
 

Gdy wczytuję obrazek do obiektu Image1, to wszystko działa jak należy. Jeśli wczytuję do Form1, to mam szare, standardowe tło :[
Obrazek jest sprawdzony pod kątem głębi i rozszerzenia - bmp 24bit.
Zainstalowałem C++ Builder XE2.

/Edit
Ten sposób działa...ale...tylko jeśli umieszczę go w zdarzeniu OnPaint dla Form1. Tak to wygląda:
KOD cpp:     UKRYJ  
void __fastcall TForm1::FormPaint(TObject *Sender)
{
                Graphics::TBitmap *bmp = new Graphics::TBitmap;
                try
                {
                        BrushBmp->LoadFromFile("test.bmp");
                        Canvas->Brush->Bitmap = bmp;
                        TRect rect;
                        rect.Left = 0;
                        rect.Top = 0;
                        rect.Right = ClientWidth;
                        rect.Bottom = ClientHeight;
                        //Canvas->StretchDraw(rect, bmp);

                        Canvas->FillRect(rect);
                }
                __finally
                {
                Canvas->Brush->Bitmap = NULL;
                delete bmp;
                }
}
 

Mam jeszcze pytanie: dlaczego nie chce działać dla innych zdarzeń tj.: OnCreate albo OnShow?
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Obraz bmp jako tło Form1

Nowy postprzez polymorphism » niedziela, 20 sierpnia 2017, 10:53

Dlatego że obraz, który malujesz na oknie, jest nietrwały i wymaga wielokrotnego odmalowywania. Do tego służy zdarzenie OnPaint, które jest wywoływane w razie potrzeby, a nie OnCreate czy OnShow.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron