Bild in das Bildfeld anpassen ??
-
Hallo leute
ich habe ein Dialogfeld in dem ich ein Bildfeld Platziert habe .
wenn ich in Eigenschaften mein Bitmap markiere.Erscheint das bild im Bildfeld.
Aber wenn ich jetz das Bildfeld vergrößere bleibt das Bitmap konstantwas muss ich machen damit sich das Bitmap in das Bildfeld anpasst das muss doch irgend wie gehen.
Kann mir jemand da weiter helfen bitte!
Grüße Can
-
Ich hab damit noch nicht viel gemacht (eben nur Bilder 1 zu 1 angezeigt). Ist das nicht nur ein einfaches Static das nur als so ne Art Platzhalter dient?
Wenn du ein Bild anzeigen willst dann lade es doch in ein CBitmap und zeichne es "von Hand" auf den DC. Mit der Methode StretchBlt(...) von CDC kannst du dein Bild in allen Größen anzeigen lassen.
Mfg, Sigi
-
Hi Sigi
Ich bin noch Anfänger das muss du mir etwas genauer erkären damit ich es auch verstehe.
Also ich gehe zu meine ressorcen klicke auf bild(BMP) importieren.
und habe jetz ein bild ID_BILD1 und lege eine membervariable von typ CBitmapm_Bitmap.
Muss ich es so machen
DC.Methode StretchBlt(ID_BILD1)und wo bekomme ich DC her? kannst du mir da bitte ein kleines beispiel schreiben?
Grüße Can
-
Das kommt in die OnPaint() in den vorhandene else-Block.
CDC *pDC = GetDC(); //zeichenfläche CBitmap bitmap; //hier wird das Bild gespeichert CDC tempDC; //hier wird das Bild hineingeladen //das Bild wird geladen bitmap.LoadBitmap(IDB_BITMAP1); //eine kombatible temporäre Zeichenoberfläche wird erstellt tempDC.CreateCompatibleDC(pDC); //das Bild wird auf den tmporären DC gelegt tempDC.SelectObject(&bitmap); int startPosX = 0; int startPosY = 0; int bildgroesseX = 77; int bildgroesseY = 66; int anzeigegroesseX = (int)(bildgroesseX*2.5f); int anzeigegroesseY = (int)(bildgroesseY*2.5f); pDC->StretchBlt( startPosX, //zeichnen: links oben X startPosY, //zeichnen: links oben Y anzeigegroesseX, //zeichnen: rechts unten X anzeigegroesseY, //zeichnen: rechts unten Y &tempDC, //DC in welchem das Bild liegt startPosX, //orig daten: links oben X startPosY, //orig daten: links oben Y bildgroesseX, //orig daten: rechts unten X bildgroesseY, //orig daten: rechts unten Y SRCCOPY); //ZeichnmodusDu kannst das ganze schneller machen wenn du die
CBitmap bitmap; //hier wird das Bild gespeichert CDC tempDC; //hier wird das Bild hineingeladenals Membervariablen anlegst und die Methoden
//das Bild wird geladen bitmap.LoadBitmap(IDB_BITMAP1); //eine kombatible temporäre Zeichenoberfläche wird erstellt tempDC.CreateCompatibleDC(GetDC()); //das Bild wird auf den tmporären DC gelegt tempDC.SelectObject(&bitmap);in die OnInitDialog() verlegst, denn dann wird das Bild nur einmal geladen und bleibt im Speicher.
Wünsch dir gutes gelingen,
Mfg, Sigi
-
Hi Sigi
Danke für den antwort werde ich mal die nacht durch machen.
Eigentlich möchte ich das bild als hintergrundbild für Textfelder laden.
Kann ich das bild auch auf ein textfeld laden oder geht das anderstde oder soll ich das bild laden und die buttons auf das bild plazieren.wie macht mann so was richtig?
Grüße can
-
Hallo
Ich kann das bild jetz anzeigen und die größe änder.aber nicht verschieben
ich muss mehrere bilder laden und unterschidlich anordnen.wie mache ich das! kann mir jemand helfen bitte..
Grüße Can
-
GAnz einfach mit dem verschieben:
Du musst nur die ersten zwei Parameter von StretchBlt ändern.
Die geben die X und Y Koordinate deines Bildes im Fenster an.
PS: Schau mal unter http://www.henkessoft.de/mfc_einsteigerbuch_kapitel4.htm nach.
Dort liegt auch ein ziemlich gutes Tutorial für Visual Studio 6.0
-
Hallo XCooperation
wenn ich die beiden werte ändere
int startPosX = 0;
int startPosY = 0;Dann komme ich nicht über die mitte des Bildschirms.
Eigentlich müßte ich das Bild mit den beiden werte da hin setzen können wo ich es möchte.
Aber wie gesagt wenn ich über die mitte komme wird das Bild nicht mehr angezeigt.was mache ich falsch ??
Auf der web seite im kapitel4 steht auch nichts drin
