Hintergrundbild (Background Image) in neuem MFC Formular in Visual Studio 2010



  • Guten Tag,

    eines vorneweg: Wir bitten alle davon abzusehen, zu fragen wieso wir das ausgerechnet so haben wollen. Es gibt gute Gründe wieso wir nicht auf andere Methoden zurückgreifen!

    Es geht um Folgendes:
    Wir müssen eine Desktop-Anwendung entwickeln mit den üblichen Steuerelementen.

    Wir bekommen es aber irgendwie nicht hin, in unserem als MFC-Projekt erstellten Formular im Visual Studio 2010 Editor ein Hintergrundbild zuzuweisen, welches dann gleich als Ressource mit in die Anwendung kompiliert wird.

    Wenn wir auf das Formular klicken, kann man in den Eigenschaften alles mögliche einstellen, aber kein Hintergrundbild zuweisen!

    Wie bekommen wir das dennoch hin? Also am Liebsten nicht im Code sondern im Editor.

    So sieht das ganze bisher aus:
    http://tricat.net/fileadmin/Images/VS2010-Starter-Projekt.png

    Mit freundlichen Grüßen,
    TriCAT GmbH



  • In der Funktion OnPaint:

    void CLogoDlg::OnPaint()
    {
            CPaintDC dc(this);
    
    	CBitmap bitmap;
    	bitmap.LoadBitmap(IDB_BITMAP34);//Bitmap wird im res Ordner
                                            //gespeichert
    	BITMAP bm;
    	bitmap.GetObject(sizeof(bm), &bm);
    	CDC speicherDC;
    	speicherDC.CreateCompatibleDC(&dc);
    	speicherDC.SelectObject(&bitmap);
    	dc.BitBlt(
    		0,0, bm.bmWidth,bm.bmHeight,&speicherDC,0,0, SRCCOPY);
    


  • Über ein Picture Control Steuerelement

    Toolbox -> Pcture Control einfügen

    In den Eigenschaften vom Picture Control:
    Type = Bitmap
    Image = Bitmap auswählen ( Muß vorher hinzugefügt sein in der Ressourcenansicht unter Bitmaps)

    Da könnt ihr aber Probleme kriegen bei verschiedenen Auflösungen, daß das Bild zu klein ist.



  • TriCAT GmbH ???
    Da müßt ihr aber noch sehr viel Üben...



  • Vielen herzlichen Dank!

    Über den Code in OnPaint() haben wir das schon hinbekommen, aber wir dachten uns, das muss doch auch über den Editor gehen.

    Wir stellen derzeit ein Projekt um und müssen uns tatsächlich erst mal einüben. Aber das ist es wert!

    Das ist aber schon ein kleiner Umweg... es wäre doch eigentlich von Microsoft schöner gewesen wenn man direkt bei den Eigenschaften eines Formulars den Hintergrund als Grafik angeben könnte.
    Oder wie siehst Du das?



  • Naja. Ein bißchen Programmieren muß man schon.
    Ihr müßt aber auch hier aufpassen, daß das Hintergrundbild groß genug ist!
    Wenn ihr zum Beispiel im Vollbildmodus ein Hintergrundbild mit 1024x786 habt,wird es bei Bildschirmen mit einer größeren Auflösung z.B. 1929x1080 nicht das ganze Fenster (View) euerer Anwendung ausfüllen.

    falls Ihr nur einen Einfarbigen Hintergrund habt könnt ihr das Hintergrundbild strecken. Es wird dann immer das ganze Fenster ausfüllen. Egal bei welcher Auflösung.

    Dieser Code in OnPaint "Streckt" das Bild:

    CBitmap bitmap;
    	bitmap.LoadBitmap(IDB_BITMAP34);
    	BITMAP bm;
    	bitmap.GetObject(sizeof(bm), &bm);
    	CDC speicherDC;
    	speicherDC.CreateCompatibleDC(&dc);
    	speicherDC.SelectObject(&bitmap);
    	RECT rect;
    	GetClientRect(&rect);
    	dc.StretchBlt(
    		0,0,rect.right-rect.left,rect.bottom-rect.top,
    		&speicherDC,0,0,bm.bmWidth, bm.bmHeight, SRCCOPY);
    


  • Danke nochmals,
    programmiert haben wir das ja sowieso schon mal. Dein geposteter Code kommt uns ziemlich bekannt vor! 😃

    Dann machen wir das halt weiterhin so bzw. eine Mischung aus Code und Editor-Einstellungen.

    Wie gesagt, es wäre halt schön gewesen wenn man im Editor hätte festlegen können: Fenstergröße = Hintergrundbild-Größe oder so ähnlich. Dann hätte man nur die Grafik-Datei austauschen und noch einmal kompilieren müssen.

    Hätte ja sein können...

    MfG


Anmelden zum Antworten