Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2009, 15:41   #1
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию Как повернуть изображение в TextBox(e)?

Добавляю новый текст бокс:
Word::ShapePtr imTextBox = m_WordDocument->Shapes->AddTextbox (Office::msoTextOrientationHorizont al, 100, 100, 1000, 1000);

Добавляю в текст бокс изображение:
Word::InlineShapePtr picture = imTextBox->TextFrame->ContainingRange->InlineShapes->AddPicture(L"c:\\image.bmp");

у InlineShape-a нет свойства rotate или метода которым его можно развернуть, пробую конвертировать его в ShapePtr и у Shape-a задать поворот:
Word::ShapePtr shapePtr = shape->ConvertToShape();
shapePtr->Rotation = angel;

в методе ConvertToShape падаем.

Если делаю так:
Word::InlineShapePtr shape = m_WordDocument->Paragraphs->Last->Range->InlineShapes->AddPicture(L"c:\\untitled.bmp");
Word::ShapePtr shapePtr = shape->ConvertToShape();

все нормально.

Что я делаю не так? Есть ли другой стособ добавить изображение в текст бокс? Возможно, сначала нужно развернуть изображение, а потом добавлять его в текст бокс?
Diego__ вне форума Ответить с цитированием
Старый 12.08.2009, 19:51   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Добавить можно, а вот разернуть почему-то нет. Хотя вручную получается. Лучше сначала развернуть, а потом вставлять.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.08.2009, 16:01   #3
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

Как добавить повернутое изображение в TextBox?

Не с помощью метода
imTextBox->TextFrame->ContainingRange->InlineShapes->AddPicture(L"c:\\image.bmp");

Дайте, пожалуйста, маленький примерчик
Diego__ вне форума Ответить с цитированием
Старый 13.08.2009, 19:12   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Это у вас нужно спрашивать
Вам нужно сначала повернуть изображение, затем сохранить его в файл, а уж только затем добавить. Как это делается на «плюсах» я, к сожалению, не знаю. Может API поможет
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 13.08.2009 в 19:20.
viter.alex вне форума Ответить с цитированием
Старый 13.08.2009, 20:07   #5
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

Такой вариант я рассматриваю, но не хотелось бы...

Мне хочется чтобы прямоугольник изображения, не содержал пустых областей. Если я поверну изображение на 45 градусов и сохраню еге в файл, получится файл с пустыми областями "в углах".

Неужели нет функциональности приблизительно такого формата:
imTextBox-> AddShapePtr(...) или imTextBox-> AddInlineImagePtr(...) ?
Diego__ вне форума Ответить с цитированием
Старый 14.08.2009, 01:38   #6
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Получилось но довольно специфическим образом.
Распакуйте файлы в одну папку откройте doc и нажмите на кнопку в
тексте
Код:
Private Sub CommandButton1_Click()
    Dim newTextbox As Shape
    Application.ScreenUpdating = False
    With ActiveDocument.Shapes
        Set newTextbox = .AddTextbox( _
                         Orientation:=msoTextOrientationHorizontal, _
                         Left:=100, Top:=300, Width:=300, Height:=200)
        .AddPicture FileName:=ThisDocument.Path & "\test.gif", Left:=400, Top:=100
        With .Item(.Count)
            .IncrementRotation -45#
            .Select
        End With
        With Selection
            .Cut
            .PasteSpecial Link:=False, DataType:=14
            .Cut
        End With
        newTextbox.TextFrame.ContainingRange.Paste
        Application.ScreenRefresh
    End With
    Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip Shapes.zip (40.8 Кб, 14 просмотров)
Aent вне форума Ответить с цитированием
Старый 14.08.2009, 13:47   #7
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

Спасибо, Aent.
На плюсах это выглядит где то так:
Word::ShapePtr imTextBox = m_WordDocument->Shapes->AddTextbox(Office::msoTextOrientat ionHorizontal, 100, 100, 400, 400);

Word::InlineShapePtr picture = m_AppWord->Selection->InlineShapes->AddPicture(L"c:\\untitled.bmp");

Word::ShapePtr shapePtr = picture->ConvertToShape();
shapePtr->Rotation = 45;
shapePtr->Select();

m_AppWord->Selection->Cut();
imTextBox->TextFrame->ContainingRange->Select();
m_AppWord->Selection->Paste();

Столкнулся со следующей проблемой. Повернутое изображение вылезает за пределы текст блока слева и сверху. Файл в прикреплении. Если делаю все руками: открываю Word добавляю изображение, разворачиваю его, создаю новый текст блок, вырезаю, вставляю - все нормально.

Пробовал програмно установить отступы у текст блока - получается обрезанное изображение.
Что здесь можно сделать?
Вложения
Тип файла: rar Document.rar (9.8 Кб, 9 просмотров)
Diego__ вне форума Ответить с цитированием
Старый 14.08.2009, 15:32   #8
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Diego__, у меня Word 2003. Ваш документ через конвертер не открывается. Если хотите что бы я его посмотрел, пожалуйста перевыложите файл в формате .doс а не .docx
Aent вне форума Ответить с цитированием
Старый 14.08.2009, 16:54   #9
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

К сожалению сохранить файл в формате doc у меня не получается. Выскакивает сообщение "You cannot put drawing objects into a text box, callout, comment, footnote, or endnote", возможно в 2003 Word-е нельзя поворачивать изображения в текст боксах.
Если я руками возвращаю угол изображения в нуль, все сохраняется нормально, но изображение уже не вылезает за пределы текст бокса.

Во вложении скриншот того, что у меня получилось, или лучше сказать - скриншот того, что у меня не получается.
Изображения
Тип файла: jpg ms word veiw.jpg (7.2 Кб, 125 просмотров)
Diego__ вне форума Ответить с цитированием
Старый 14.08.2009, 19:58   #10
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

А каковы размеры и параметры TextBox'а ?
(Картинку в формате .png взял из вашего .docx файла)
Вообще не очень понятно что вы хотите в конце концов получить.
Сделайте вручную в Word желаемый документ и опубликуйте его на форуме в формате .doc.
Если не сможете сделать то что нужно в Word - выкладывайте картинку с фотошопа
Фраза
Цитата:
Мне хочется чтобы прямоугольник изображения, не содержал пустых областей
применительно к картинке из приаттаченного вами файла вообще не понятна.
Итого: опубликуйте окончательный вид того что хотите получить...

Последний раз редактировалось Aent; 14.08.2009 в 20:07.
Aent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть изображение на 180 градусов? kl45gp Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 11.05.2013 13:10
КАК повернуть матрицу на 90 градусов вправо (или влево). RomT24 Помощь студентам 15 09.12.2009 10:52
Как повернуть изображение в TGraphicControl на 180 градусов? NeonSimfi Win Api 1 06.05.2009 21:20
TextBox как отменить курсор LeGAl Общие вопросы .NET 4 30.04.2009 01:51
Как создать маску ввода даты в TextBox? AnnNet Microsoft Office Excel 6 24.07.2008 10:42