[.NET CF 2.0] Gedeelte van een label onderstrepen

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 13-02 10:34
Ik heb een kleine applicatie ontwikkeld voor m'n PDA (WM5) in C# 2.0. Het is bedoeld om woordjes te leren (nederlands - italiaans). Ik gebruik het standaard Label control om de woordjes op het scherm te tonen.
Nou wil ik graag van het italiaanse woord de lettergreep onderstrepen waar de klemtoon op valt. Dat lukt dus niet met het standaard Label control.

Ik heb gekeken naar:
- RichTextBox, formatten als een label, maar het RichTextBox is niet beschikbaar in het compact framework.
- LinkLabel. In het normale framework kan je een gedeelte onderstrepen, maar helaas lukt dat in het compact framework ook niet.
- Gebruik van meerdere labels aan elkaar plakken waarbij 1 label onderstrepen. Erg omslachtig en ik betwijfel of ik alle labels keurig tegen elkaar aan gepositioneerd krijg, zo dat er geen witte ruimtes tussen de lettergrepen ontstaan.
- Een speciaal karakter of hoofdletters gebruiken om de klemtoon aan te geven. Ja kan, niet mooi dus alleen als er verder niks mogelijk is...

Iemand nog ideeen? Is het uberhaupt mogelijk wat ik wil?

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 14-02 10:05
Een eigen klasse maken die van Label inherit en dan de OnPaint overriden.

In de OnPaint bepaal je met wat stringfuncties Graphics.MeasureString() waar de streep moet beginnen en eindigen en uiteindelijk teken je met Graphics.DrawLine() een lijntje...

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
Een label heeft een Autosize. Dit houdt in dat hij het label net zo breed maakt als er karakters zijn. Die kun je op true zetten.
Op basis van label1.Size kun je dan de breedte bepalen. Aan het einde plak je de volgende label.
C#:
1
2
3
4
5
6
7
8
9
private void WriteLabelString(int x, int y, String text, int underlinewordNumber)
{
// tel aantal woorden door spaties bij langs te gaan
//maak array van Labels met de woordcount
//begin lus
//plaats eerste label op x,y, neem de lengte en plaats volgende label ernaast op die label.Size
//zet, als de labelnr underlinewordNumber is de fontproperty op onderstreept
//eind lus
}