VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / System / Multimedia / MDI Zeichenoperationen auf MDI-Hintergrund |
Normalerweise kann der Hintergrund eines MDI-Formulars nicht gestaltet werden - ohne echten Container sind keine Zeichenoperationen möglich. Im Web findet man höchstens sehr umständliche und aufwändige Lösungen, die SubClassing benutzen.
Die hier gezeigte Methode kommt mit purem VB-Code aus, und ist trotzdem sehr schnell und flexibel. Sie nutzt dazu die Picture-Eigenschaft des MDI-Formulars, welche bei jedem Resize auf den Inhalt einer unsichtbaren PictureBox gesetzt wird. Da diese PictureBox vorher an die Größe des MDI-Formulars angepaßt wird, entsteht der Eindruck einer vollständigen Hintergrundgrafik.
Öffnen Sie ein neues VB-Projekt, fügen Sie eine MDIForm hinzu und wählen Sie in den Projekt-Eigenschaften als Startobjekt gerade dieses MDI-Formular aus.
Fügen Sie eine PictureBox hinzu - sie wird automatisch im MDI-Formular ganz oben angeordnet. Setzen Sie folgende Eigenschaften:
| Eigenschaft | Wert | Bemerkung |
| (Name) | picBackground | |
| Appearance | 0 | Flat |
| AutoRedraw | True | |
| BorderStyle | 0 | None |
| ScaleMode | 3 | Pixel |
| Visible | False |
Benutzen Sie folgenden Code im Resize-Ereignis des MDI-Formulars:
Private Sub MDIForm_Resize()
Dim x As Long
Dim y As Long
Dim r As Long
'PictureBox vorbereiten:
With picBackground
'Bild-Größe anpassen:
.Move 0, 0, ScaleWidth, ScaleHeight
'Roten Farbverlauf zeichnen:
For y = 0 To .ScaleHeight - 1
r = 255 - 255 * y / .ScaleHeight
picBackground.Line (0, y)-(ScaleWidth, y), RGB(r, r, 255)
Next y
'Einen zentrierten Kreis zeichnen:
x = .ScaleWidth \ 2 - 1
y = .ScaleHeight \ 2 - 1
If y < x Then r = y Else r = x
picBackground.Circle (x, y), r
End With
'Hintergrund aktualisieren:
Set Picture = picBackground.Image
End Sub
Damit die PictureBox schon beim ersten Anzeigen dir richtige Größe hat, fügen Sie den entsprechenden Code in das Activate-Ereignis ein:
Private Sub MDIForm_Activate() MDIForm_Resize End Sub
Alternativ können Sie auch die ScrollBars-Eigenschaft des MDI-Formulars auf False setzen.
© Jost Schwider, 10.01.2002-10.01.2002 - http://vb-tec.de/mdibg.htm