Text an einer bestimmten Stelle einer Grafik einfügen



  • Hallo,

    ich möchte einen bestimmten Text den ich vorher in einem Dialog eingegeben habe in einem Fenster ausgeben.
    Das Fenster sieht folgendermaßen aus:

    void Fenster::draw(CDC* pDC)
    	{
    	CPen   gummi(PS_SOLID, 2, RGB(0,0,100));
    	pDC->SelectStockObject(NULL_BRUSH);
    	pDC->SelectObject(gummi);
    	//Rundes Rechteck malen
    	pDC->RoundRect(position.x, position.y, rechtsUnten.x, rechtsUnten.y, 10, 10);
    	//Rechteck für Bezeichnung malen
    	CBrush* myBrush = new CBrush(RGB(255,255,255));
    	pDC->SelectObject(myBrush);
    	pDC->RoundRect(position.x, position.y, position.x + 200, position.y + 25, 10, 10);
    	SAFE_DELETE(myBrush);
    	//pDC->DrawString(this->beschreibung, position.x, position.y...wie geht das???);
    	}
    

    Ich hab auch noch folgendes erstellt:

    void ParamAktivitaet::setBeschreibung(string s) 
     { 
     this->beschreibung = s; 
     } 
     string ParamAktivitaet::getBeschreibung() 
     { 
     return this->beschreibung; 
     }
    

    Nun bekomme ich es aber nicht gebacken die beschreibung des ganzen in dem kleinen Rechteck anzeigen zu lassen. Ich komme mit der DrawText anscheinend nicht so richtig zurecht... 😃
    Wäre nett wenn ihr mir kürz helfen könntet.

    Grüße Huchi


  • Mod

    1. Wenn Du mit DrawText nicht zurecht kommst, dann sage uns wo Dein Problem liegt, oder Zeige uns Code, der eben nicht tut was er soll.
    2. Bitte lerne wie man mit GDI Handlesw umgeht.
    Du erzeugst ein Brush Objekt selektierst es in den DC und löscht es während es noch selektiert ist. Das erzeugt ein GDI-Leak! Zudem kannst Du Dir new sparen.

    CBrush myBrush;
    myBrush.CreateSolidBrush(RGB(255,255,255));
    CBrush* pOldBrush = pDC->SelectObject(&myBrush);
    pDC->RoundRect(position.x, position.y, position.x + 200, position.y + 25, 10, 10);
    pDC->SelectObject(pOldBrush);
    


  • //pDC->DrawText(this->beschreibung, position.x, position.y...wie geht das???);
    

    Das hier sollte ja nur zeigen wie ich mir das ungefähr vorgestellt habe.
    Hab schon versucht mit DrawText "rumzuspielen" aber bekomme halt nix hin.

    Ich selbst habe folgendes probiert:

    pdc->DrawText( this->beschreibung, RoundRect, DT_SINGLELINE|DT_CALCRECT );
    

    Funzt aber nicht so wirklich.
    Wie kann ich ordentlich auch mein ausgelesenes this->beschreibung in der DrawText zurück greifen, dass die dann da auch rein gezeichnet wird?

    Gruß Huchi


  • Mod

    ... und was bitte ist this?
    Was funktioniert nicht?

    Werde doch bitte etwas genauer in der Angabe Deines Problems...



  • Ja mein Problem liegt darin, dass ich nen Text einfach in ne vorher schon erstellte Grafik rein schreiben will.
    Der Text wird aber vor dem Aufruf der Draw in einem Dialog eingegeben.
    this->beschreibung ist der Text der aus dem Dialog ausgelesen wird.
    Wie bekomme ich ech nun ordentlich hin den Text in meine Zeichnung (das zweite kleine runde Rechteckt) zu zeichnen?
    Funktionieren tut alles bis aufs zeichnen der Schrift halt.
    Oder hast du nen anderen Vorschlag mit was man meine "beschreibung"
    in die Zeichnung bekommt?

    Gruß Huchi


  • Mod

    Mit DrawText! 🕶



  • 😕

    kannste mir mal nen Beispiel aufschreiben wie man dass dann am besten macht?
    ich möchte auch mein bezeichnung aus string ParamAktivitaet::getBeschreibung()
    zugreifen. Bei mir will der nicht.

    Gruß Huchi


  • Mod

    Nein! DAs kann ich nicht. Weil ich Deine Schateliung der Klasen nicht kenne und nicht weiß wo welche Instanzen leben.

    Kennst Du schrittweise vorgehen?

    1. Versuche mal DrawText mit einem statischen Text auszuführen.
    Wenn das geht:
    2. Versuche Deine Insatnz zu nutzen von dem Objekt, das Du einzeigen willst.
    3. Rate ich Dir dringend en Grundlagenbuich zu C++ durchzuarbeiten.


Anmelden zum Antworten