\ charscalexN не работает на RichTextBox - PullRequest
0 голосов
/ 01 июня 2018

Изображения:

Мой код:

private void BtnSetContent_Click(object sender, EventArgs e)
{
    string fn = @"C:\Users\User\Documents\보통 글자.rtf";
    string towrite = "";
    StreamReader sr = new StreamReader(fn);
    while (sr.Peek() >= 0)
    {
        towrite += sr.ReadLine() + " ";
    }
    sr.Close();
    MessageBox.Show(towrite);
    RTBMainText.Rtf = towrite;
}

Я хочу показать растянутый на 200%текст (например, {\charscalex200 Stretched}) для RichTextBox, но это ключевое слово, похоже, игнорируется, поэтому charscalex ed тексты отображаются без изменений.

Есть ли какое-либо решение, ванильное или с некоторыми дополнительными библиотеками, для показарастянутые тексты?

1 Ответ

0 голосов
/ 02 июня 2018

Вам необходимо использовать последнюю версию библиотеки RichText.Создайте свой собственный элемент управления RichTextBox и переопределите свойство CreateParams:

using System.Runtime.InteropServices;

public class RichBox : RichTextBox {

  [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
  private static extern IntPtr LoadLibrary(string lpFileName);

  protected override CreateParams CreateParams {
    get {
      var cp = base.CreateParams;
      if (LoadLibrary("msftedit.dll") != IntPtr.Zero) {
        cp.ClassName = "RICHEDIT50W";
      }
      return cp;
    }
  }
}

Результат:

enter image description here

Перестройте свое решение и используйте этот элемент управлениявместо стандартного элемента управления RichTextBox.

Также вы можете просто использовать метод LoadFile:

richTextBox1.LoadFile(@"C:\Users\User\Documents\보통 글자.rtf");
...