- MDI Forms bieten standardmäßig keine Möglichkeit darauf Grafik zu malen, man muß sich mit einem eigenen Canvas-Objekt behelfen
- imgBackImage beinhaltet das Hintergrundbild, das auf die Form kopiert wird
- Problem dabei ist, dass alle auf der Form befindlichen Objekte übermalt werden, auch die Child-Windows. Man muß also erreichen, dass diese sich alle neu zeichnen.
void __fastcall TfrmMain::RepaintBackGround() { int iTop = 48; int iLeft = 0; int iWidth = this->Width - iLeft; int iHeight = this->Height - iTop; TRect SourceRect, DestRect; // Ausschnitt aus dem Quellbild definieren SourceRect = Rect(0, 0, iWidth, iHeight); // Zielrechteck definieren DestRect = Rect(iLeft, iTop, iWidth, iHeight); TCanvas * FCanvas = new TCanvas(); if (FCanvas) { // auf die akt. Form malen FCanvas->Handle = GetWindowDC(Handle); SetBkMode(FCanvas->Handle, TRANSPARENT); // Quelle in das Ziel kopieren FCanvas->CopyRect(DestRect, imgBackImage->Picture->Bitmap->Canvas, SourceRect); delete FCanvas; } }