Kontrolka tekstowa z Graphics.DrawString

0

Cześć,

Problem jak widać po temacie. Chciałbym przygotować kontrolkę, która rysowałaby na formatce tekst. Stąd też tworzę klasę:

public class MojaKontrolka : System.Windows.Forms.Control
{
  public MojaKontrolka()
  {
  }
}

Niestety na tym moja wena twórcza się kończy i nie wiem co mam dalej zrobić by stworzyć pełnoprawną kontrolkę, a co więcej nie wiem jak przy pomocy DrawString wpisać na nią tekst. Możecie mi pomóc?

0

Uzyj zdarzenia Paint swojej kontrolki:

private void UserControl1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.DrawString("taki sobie tekst", new Font("Tahoma", 50), Brushes.Black, 0, 0);
            g.Dispose();
        }
0

Dzięki, korzystając ze zdarzenia Paint udało mi się faktycznie stworzyć coś co zaczęło wyglądać na rozwiązanie którego poszukiwałem :)

Pozwolę sobie jednak temat trochę pomęczyć bo czuję w nim pewien niedosyt :) Starałem się zagłębić w kod już istniejących kontrolek i muszę stwierdzić, że nie widziałem w ich konstruktorach by było wywoływane zdarzenie Painta - nawet w dość zbieżnej kontrolce System.Windows.Forms.Label.

Stąd zastanawiam się jak to się dzieje w innych kontrolach :) Właśnie np. w Label :)

0
grzeswisniewski napisał(a)

Pozwolę sobie jednak temat trochę pomęczyć bo czuję w nim pewien niedosyt :) Starałem się zagłębić w kod już istniejących kontrolek i muszę stwierdzić, że nie widziałem w ich konstruktorach by było wywoływane zdarzenie Painta - nawet w dość zbieżnej kontrolce System.Windows.Forms.Label.

A jak sie zaglebiales w kod tych kontrolek?

grzeswisniewski napisał(a)

Stąd zastanawiam się jak to się dzieje w innych kontrolach :) Właśnie np. w Label :)

Kazda kontrolka ma zdarzenie Paint. Jest ono wywolywane gdy kontrolka musi byc odrysowana.

0

Użyłem Reflector'a - możesz poza przeglądaniem swojego kodu, ewentualnie kodu innych oglądać także elementy .Net'a :)

Spoko. Ukierunkowałeś mnie i znalazłem. Zamiast tworzyć obsługę zdarzenia Paint, można:
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
i wewnątrz jego działa malować :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1