[VC++ 2005] String Länge

the incredible Leitman

Erfahrenes Mitglied
Hallo Ihr Genies :D

Habe ein Problem, mir dem ihr mir hoffentlich schnell weiterhelfen könnt:

Ich möchte einen String mittels einem eigenen Alignment Property in einem Bereich bestimmt positionieren können
Jedoch brauche ich dafür die ! GRAFISCHE ! Länge des Strings
Also anstelle von z.B: Label->Width möchte ich eben nun wissen, wie lang der gewünschte String mit Text ist

Geht das irgendwie?!
Weiß nicht wonach ich suchen sollte, mit Length und dergleichen erhalte ich ja die Anzahl der Zeichen...

Was kann ich machen?

Vielen Dank im Vorraus
 
Probiers damit:
Code:
String* test = "teststring";
Graphics* graph = this->CreateGraphics();
System::Drawing::Font* font = new System::Drawing::Font("Arial", 13.5);

SizeF size = graph->MeasureString(test, font);
 
Danke Leute, habs gestern am Abend bereits hinbekommen, hatte nur keinen Internetzugang, deshalb konnte ich euch nicht schreiben

Habs Jetzt folgendermaßen gelöst:
C++:
// da ich kein Graphics Object zur Verfügung habe, muss ich zuerst eines erstellen:
System::Drawing::Graphics^ g = this->CreateGraphics();

// danach die Größe, in der ich die Länge und Breite des String speichern kann:
System::Drawing::SizeF^ stringSize = gcnew SizeF();

// und zuletzt mit der Funktion MeasureString die Größe abmessen:
stringSize = g->MeasureString(m_text, m_textFont);

Die Verwendung in meinem Alignment Property sieht jetzt wie folgt aus:
C++:
switch(m_textAlign)
{
	case ZLSControls::ZLSControlBaseClass::Alignment::TopLeft:
		this->m_textLocation = System::Drawing::Point(0,-2);
		break;
	case ZLSControls::ZLSControlBaseClass::Alignment::TopCenter:
		this->m_textLocation = System::Drawing::Point((this->Width-stringSize->Width)/2-2,-2);
		break;
/*
...
*/

Danke nochmals :D
@Cosmo, big THX, wenn nur jeder so auführliche Antworten geben würde :D
Nein, Spaß, hat voll gepasst, genau das hab ich gebraucht, einfach den Namen des Befehls :)

Edit: PS: Die Lösung ist managed C++ in Visual Studio 2005, mittels "gcnew" werden Objekte auf dem managed heap angelegt, um deren Löschung man sich nicht selber kümmern muss, weiters wird anstelle von * nun ein Dach ^ verwendet!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück