Entwickler-Ecke

Windows API - Hintergrundbild für ein Formular


Tobi - So 21.12.03 13:40
Titel: Hintergrundbild für ein Formular
Wie kann man einem Formular ein Hintergrundbild zuweisen?!
Ich hab bei der normalen Imagekomponente näml. das Problem, dass sie nicht in den Hintergrund "will"...


Lossy eX - So 21.12.03 19:55

Wie wäre es denn, wenn du das Formular selber zeichnest.
Und zwar nimmst du ein Bitmap das Lädst du in ein TBitmap. Nach Möglichkeit im OnCreate des Fensters.


Delphi-Quelltext
1:
2:
Form.Canvas.Brush.Bitmap := Bitmap;
Form.Canvas.FillRect(Form.BoundsRect);

So in etwa müsste das gehen. Das musst du natürlich bei jedem OnPaint durchführen. Geht aber ganz fix. Er Kachelt das dann Automatisch.

Als andere Alternative kannst du auch eine PaintBox mit Align alClient in den Hintergrund deines Fensters legen und darauf zeichnen. Aber Form.Canvas ist da vom Prinzip her das Selbe.


catweasel - So 21.12.03 20:13

Zitat:
Als andere Alternative kannst du auch eine PaintBox mit Align alClient in den Hintergrund deines Fensters legen und darauf zeichnen. Aber Form.Canvas ist da vom Prinzip her das Selbe.


Naja, abgesehen davon dass eine Painbox viel mehr resourcen verbraucht........
und ein onclick auf die Form ist nicht mehr so ohne weiteres möglich (falls gebraucht)

das mit dem bitmap ist da besser..

Catweasel


Tobi - Mo 22.12.03 23:53

hm, ich hab das jetzt mal ausprobiert, also aus einer imagesammlung ein bild in Bitmap geladen und obigen Code getestet. Leider wird kein Hintergrundbild angezeigt.


Anonymous - Di 23.12.03 23:20

Delphi Hilfe hat folgendes geschrieben:

If the image is larger than eight pixels by eight pixels, only the top left eight-by-eight region is used.


Das scheint aber auch vom OS abzuhängen. Bei mir (WinXP) zeichnet er das gesamte Bitmap.[/quote]


recall - Mi 24.12.03 00:18

@Tobi: Wo hast du denn die Proc hingesetzt ? Ins OnPaint ?
@obbschtkuche: Läuft unter Win95, XP, 2000, NT4.0... Würde mich auch sehr wundern wenn nicht ?!? Meine Delphi-Hilfe sagt sowas auch nicht (D7 Enterprise)

Viele Grüsse.