Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 |

 

  Вопрос: Для знатоков. Есть проблема с RichTextBox1 Добавлено: 17.01.07 00:03  

Автор вопроса:  Георгич
 Есть проблема с RichTextBox1, она заключается в следующем. Загружаем текстовый файл с картинками с расширением .RTF ,он выводиться в RichTextBox1 всё нормально ,есть текст, есть картинки. Теперь мне надо взять эту картинку или картинки для последующей редакции , ну например узнать цвет каждого пикселя . Т .е перевести картинку в класс Bitmap . Должно быть всё просто, копируй, вставляй в пустой графический файл и дальше работай с файлом ,вот здесь и стоп. Да, можно копировать картинку из RichTextBox1, и вставлять в другой RichTextBox2 или в сам RichTextBox1 , так же вставляется в Word, но не более .
Вот здесь и есть вопросы, в каком формате картинка в текстовом документеRTF и , что с буфером для RichTextBox . Я решил проблему копирования картинки из RichTextBox,код ниже , но , что то мне подсказывает, что надо просто прописать для Clipboard
Нужные форматы. Что то подобное я встречал но совершенно не помню.


 
Код полностью рабочий

Private Sub КопироватьКартинку_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        RichTextBox1.Copy() 'Копируем выделенный объект (картинку)

        'Делаем ссылку в проекте на библиотеку COM элемента Word Objecct Library

        'Запускаем редактор Word в фоновом режиме
        Dim РедакторВорд As New Microsoft.Office.Interop.Word.Application
        РедакторВорд.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone
        ' Создаём новый документ ( пользователь его не видит)
        Dim ДокументВорд As Microsoft.Office.Interop.Word.Document = РедакторВорд.Documents.Add()
        Dim Поле As Microsoft.Office.Interop.Word.Range = ДокументВорд.Paragraphs.Add().Range
        ' ДокументВорд.Visible = True ' Так можно увидеть документ
        ' Вставляем из буфера картинку в документ
        Поле.Paste()
        'Копируем картинку
        Поле.Copy()
        'Сохраняем документ, чтобы не выскакивало диалоговое окно о сохранении
        ДокументВорд.SaveAs("C:\test.doc")
        'Закрываем документ
        ДокументВорд.Close()
        'Удаляем текстовый файл Word за ненадобностью
        System.IO.File.Delete("C:\test.doc")
        'Создаём объект Картинка класса Image, присваиваем данные из буфера
        Dim Картинка As Image = CType(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Bitmap)
        ' показываем картинку в PictureBox1
        PictureBox1.Image = Картинка
        'Сохраняем в файле
        Картинка.Save("C:\test.JPG")


End Sub

Ответить

  Ответы Всего ответов: 32  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 17.01.07 09:28
Что то я не уловил в твоем коде смысла этого танца с бубнами вокруг документа Word/// И вообще не уловил сути проблемы.. Если я тебя правильно понял, то твой код работает, все копируется, все вставляется.. Что ты, конкретно, пытаешься сделать?

Ответить

Номер ответа: 2
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #2 Добавлено: 17.01.07 11:05
Суть дела в шифровании. Когда шифруешь текстовый документ с картинками текст шифруется, здесь проблем нет, а вот картинки пропадают Задача в моём приложении зашифровать текст, зашифровать картинки при дешифровке все вернуть на прежнее место . Я уже у себя прописал код который мне находи картинки в тексте , код основан на нахождении не текстового формата и копировании этого элемента(картинки) Таким образом я программно выбираю все картинки из текста Вот тут с копированием из RichTextBox и происходит ерунда, работает код который я прописал выше, а вот такой код не работает
Private Sub КопироватьКартинку_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        RichTextBox1.Copy() 'Копируем выделенный объект (картинку)
        ;Dim Картинка As Image = CType(Clipboard.GetDataObject.GetData(DataFormats.Bitmap), Bitmap)
        PictureBox1.Image = Картинка
    End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #3 Добавлено: 17.01.07 11:29
Да, не дописал, мне самому не нравиться этот крендель с Word-ом весь смысл которого заключается в том , что я в Word вставляю картинку а потом ее копирую, но буфер воспринимает данный формат из Word-а , а из RichTextBox1 нет , вот я и спрашиваю нет ли альтернативных решений или какие форматы надо прописать для Clipboard

Ответить

Номер ответа: 4
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #4 Добавлено: 17.01.07 11:40
А нельзя зашифровать уже сохраненный файл с картинками и текстом...

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 17.01.07 12:37
но буфер воспринимает данный формат из Word-а , а из RichTextBox нет

В таком случае тебе надо для начала выяснить в каком виде попадает картинка в буфер из RichTextBox, а уже потом исходя из формата хранения в буфере и будешь думать как привести ТО, что там храниться к соответствующему виду Bitmap...
И еще... вариант предложенный avdey, тоже не лишен смысла. Может стоит сохранить все содержимое RichTextBox в MemoryStream, получить оттуда массив байт, зашифровать его и уже после этого скинуть на HDD? Ты все же подумай в эту сторону...

Ответить

Номер ответа: 6
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #6 Добавлено: 17.01.07 12:49
Так я и говорю , что при шифровании из сохранённого файла , Когда создаешь криптографический поток (CriptoStream) , то картинка не воспринимается как текстовый формат и попросту пропускается, и при дешифровки соответственно текст дешифруется без картинок.

Ответить

Номер ответа: 7
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #7 Добавлено: 17.01.07 13:08
Я побывал через MemoryStream правда, мог что то-то не додумать , я создавал поток из памяти и для проверки выводил его в TextBox часть байтов выводилась нормально ,наверно текстовая, а потом комп. просто зависал. Сей час, проработаю это направление с MemoryStream по лучше, посмотрим. Если к Вам придут ещё идеи ,то дайте знать

Ответить

Номер ответа: 8
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #8 Добавлено: 17.01.07 17:33
картинка не воспринимается как текстовый формат

Причем тут текстовый формат??? В массиве байт нет различия между текстом или картинкой... ИМХО

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 17.01.07 21:17
Я сейчас специально проверил... по ходу ты там вставляешь картинку не верно.. вот так работает без проблем..

Вставляем
        Dim _format As DataFormats.Format = DataFormats.GetFormat(DataFormats.Bitmap)
        Clipboard.SetImage(PictureBox1.Image)
        RichTextBox1.Paste(_format)


Забираем
        '// НЕОБХОДИМО ПРЕДВАРИТЕЛЬНО ВЫДЕЛИТЬ КАРТИНКУ
        Clipboard.Clear()
        RichTextBox1.Copy()
        PictureBox2.Image = Clipboard.GetImage

Ответить

Номер ответа: 10
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #10 Добавлено: 19.01.07 08:50
А ты в каком Бейсике пишешь. У меня в VB.Net 2003 для Clipboard , таких методов как SetImage и Clear нет

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 19.01.07 17:26
А я уж год, как на VS 2005 перешел...

Ответить

Номер ответа: 12
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #12 Добавлено: 19.01.07 17:29
Но в любом случае, я так думаю, правильнее было бы шифровать через массив байт.. от всех бы геморроев с картинками избавился бы...

Ответить

Номер ответа: 13
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #13 Добавлено: 23.01.07 09:56
Я послушал Ваш совет, и начал шифровать через поток байт. Результат идеальный. Правда столкнулся с трудностью преобразования Byte в Char и обратно, но разобрался. К стати шифровал не через массивы байт. а через файловые потоки. Производительность отличная. Всем спасибо за помощь.

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 23.01.07 10:00
покажи код

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 23.01.07 11:19
А зачем тебе Char понадобился??? Там и без него можно обойтись...

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам