- 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;
}
}