Как изменить размер изображения в RichTextBox? - PullRequest
1 голос
/ 28 мая 2020

это может звучать как репост уже заданного вопроса. Однако я потратил несколько дней на просмотр и тестирование множества различных примеров с различных веб-сайтов (включая stackoveflow.com). До сих пор я получал в основном нежелательные результаты, и я немного не понимаю, как добиться того или чего-то такого, что дает хорошие результаты? Если кто-то может помочь, я был бы очень признателен!

Я работаю в VB. NET и использую Visual Studio 2015.

Моя цель - получить четкое изображение в итоговом RTF файл, когда я открываю его в текстовом редакторе (я использую WPS Office). Однако низкое качество не в фокусе изображения, которое я получил в окончательном документе RTF, не является хорошим заголовком для описания, для которого я хочу его использовать! И после печати это будет выглядеть плохо! Я не ищу миниатюрное изображение, поскольку оно требуется для более крупного заголовка документа.

Большинство решений, которые я пробовал, связаны с изменением размера изображения и последующей вставкой его в текстовое поле Rich Text Box (RTB).

Однако, хотя я пробовал использовать интерполяцию, сглаживание и т. Д. c., Результаты невелики. Для изменения размера я пробовал примеры, которые используют деление, процент и т. Д. c.

Я работаю над приложением для личного использования, которое «вставляет» снимок экрана активного решения / приложения (например, растровое изображение ) в окно изображения (PB) и в RTB с использованием буфера обмена, заголовок добавляется, затем текст добавляется вручную в RTB, и результат сохраняется в виде файла RTF.

Проблемы с качеством изображения, которые я обнаружил:

  • Вставка изображения после изменения размера / масштабирования оригинала (или копии) в окно изображения снижает качество?
  • Сохранение в файл RTF или открытие файла RTF в текстовом редакторе снижает качественный? (Не уверены, что вызывает проблему?)

Оба эти процесса приводят к низкому качеству, не в фокусе изображения (с или без интерполяции, сглаживания, сглаживания и т. Д. c.)? Итак, мне кажется, что изменение размера перед вставкой снижает качество. Я пробовал вставить прямо из буфера обмена, а также скопировать изображение из окна изображения в буфер обмена, а затем вставить его в RTB. Обе эти процедуры дают хорошие результаты!

Чтобы быть объективным, я не могу поделиться всем кодом, который я тестировал, но приведу ниже простой пример кода, который обеспечивает наилучшее качество изображения для меня, то есть просто вставляя снимок экрана прямо из буфера обмена в RTB. Однако получившееся изображение после вставки в RTB не было изменено и поэтому слишком велико. Я не хочу вручную изменять размер изображения в документе RTF, так как это будет чрезвычайно повторяющаяся задача!

После вставки растрового изображения в RTF я использовал методы Select All или Selection Start - 1 для выберите изображение в RTB, но чтобы задать вопрос: «Как я могу изменить размер изображения в RTB?»

Вы можете спросить, почему я хочу это сделать. Что ж, вставка растрового изображения непосредственно в RTB дает мне изображение того же качества, что и в Picture Box. После сохранения в RTF-файл и его открытия в текстовом редакторе наблюдается небольшая потеря, но качество намного лучше, чем при использовании других методов, упомянутых выше (например, изменение размера и вставка)! Итак, мне стало любопытно попытаться вставить, а затем изменить размер! Вот мой код:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Check whether PB1 is empty:
    If PictureBox1.Image Is Nothing Then
        'Get image from clipboard to PB1:
        PictureBox1.Image = My.Computer.Clipboard.GetImage
        'Resize image to fit PB1:
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        'Paste image:
        RichTextBox1.Paste()

End Sub

...