Eigene Grafik in StatusBar neuzeichnen bei verdecken der Form
-
Hallo,
ich möchte in die StatusBar einen ausgefüllten Kreis zeichnen. Das funktioniert auch wunderbar bis auf 2 Situationen. Beim Start des Programmes und beim Neuzeichnen der Form wird der Kreis nicht gezeichnet.
Ich habe schon das OnDrawPanel Ereignis probiert - leider ohne Erfolg. Scheinbar wird zuerst mein Kreis gezeichnet und dann erst das Panel.void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect) { TCanvas *pCanvas = StatusBar1->Canvas; if(Panel->Index == 0) { if(CAN1->Active == true) { pCanvas->Brush->Color = clGreen; } else { pCanvas->Brush->Color = clGRed; } pCanvas->Brush->Style = bsSolid; pCanvas->Ellipse(4, 6, StatusBar1->Height-4, StatusBar1->Height-4); } }Gruß
-
Gehört so was nicht in die OnPaint des Forms?
-
hi, schau mal hier:
http://www.bytesandmore.de/rad/index.htm
unter snippets c++ / vcl/Bitmaps und ProgressBar in der Statusleiste anzeigen
-
Kannst ja mal explizit "StatusBar1->Refresh()" im OnPaint des Formulars aufrufen.
-
Mir ist zwar nicht klar was im obigen Code falsch ist, aber ich habe nun eine etwas andere funktionsfähige Version.
void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect) { if (Panel->Index == 0) { Graphics::TBitmap* pBitmap = new Graphics::TBitmap(); pBitmap->Height = Rect.Height(); pBitmap->Width = Rect.Width(); pBitmap->Transparent = true; pBitmap->TransparentColor = clWhite; pBitmap->Canvas->Brush->Color = clWhite; pBitmap->Canvas->Brush->Style = bsSolid; pBitmap->Canvas->FillRect(TRect(0,0,Rect.Width(),Rect.Height())); if(CAN1->Active == true) { pBitmap->Canvas->Brush->Color = clGreen; } else { pBitmap->Canvas->Brush->Color = clRed; } pBitmap->Canvas->Ellipse(3,3,Rect.Width()-3,Rect.Height()-3); StatusBar->Canvas->Draw(Rect.Left,Rect.Top,pBitmap); if(pBitmap)delete pBitmap; } }Warum muss ich dem Bitmap immer mit FillRect die transparente Farbe zuweisen?

Ich habe es zumindest nicht anderst geschafft.Gruß
-
Hrmpf
Man sollte doch zuerst das Fenster refreshen bevor man einen weiteren Beitrag schreibt.
@Avalon: Das Snippet war meine Basis und hat ebenfalls das Problem, dass das Icon nicht neu gezeichnet wird.
Den richtigen Denkanstoß habe ich bei
http://fatman98.fa.funpic.de/builder_grafik.php
bekommen.Danke trotzdem!!!