Xpoint
   [напомнить пароль]

C#. Как сделать фоновый рисунок для RichTextBox?

Метки: [без меток]
2008-09-05 15:19:10 [обр] Антон[досье]
Вопрос простой, но почему-то поиск по Google ответа не дает.
Есть RichTextBox, в него загружается RTF-файл. Очень нужен фоновый рисунок для этого RichTextBox. Фон в RTF-файле он не воспринимает. Может быть, можно сделать RichTextBox прозрачным и залить рисунок под нее, на форму? Как это сделать? Или действовать нужно как-то иначе? Зарание благодарю.
спустя 2 дня 19 часов [обр] Othello(25/25)[досье]

ИМХО - просто это сделать у вас не получится.

  class rtb:RichTextBox
  {
    const int WM_ERASEBKGND = 0x0014;
    const int WM_PAINT = 0x000F;

    protected override void WndProc(ref Message m)
    {
      base.WndProc(ref m);
      if (m.Msg == WM_ERASEBKGND)
        drawBG();
    }

    private void drawBG()
    {
      using (Graphics g = this.CreateGraphics())
        g.FillRectangle(Brushes.Black, 0, 0, this.Width, this.Height);
    }
  }

вот этот код закрашивает элемент чёрным цветом. Но после него отрабатывает обработчик WM_PAINT - который перекрашивает цвет элемента в цвет фона ещё 1 раз, тем самым перекрашивая (закрашивая) то что сделал WM_ERASEBACKGROUND.

Вы можете перехватить WM_PAINT - но тогда я вы будете всё рисовать сами - по факту сделаете свой элемент RichTextBox.

ЗЫ
почемуто Paint обработчик у меня вообще не вызывался.

Powered by POEM™ Engine Copyright © 2002-2005