Объект ShadowFormat — тень фигуры

Объект ShadowFormat — тень фигуры Объектная модель Microsoft Word

Доброго времени суток всем подписчикам и читателям блога scriptcoding.ru. Сегодня мы рассмотрим класс ShadowFormat объектной модели Word, который отвечает за параметры тени для заданной фигуры, вставленной в текстовый документ Word.

Что бы освежить вашу, а заодно и мою память, давайте рассмотрим, как происходит вставка различных фигур в документ и настройка различных параметров – тень, цвет, объемность и так далее.

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

  • Коллекция фигур – тут можно выбрать понравившуюся фигуру и вставить ее в документ.
  • Стили фигур – коллекция различных стилей, содержащих заливки и рамки для заданной фигуры.
  • Заливка, контур и изменить – собственно, тут можно выбрать понравившуюся заливку (FillFormat), контур (LineFormat) или изменить уже выбранную фигуру.
  • Эффекты тени – собственно, тень фигуры заданных параметров.

Следующие параметры позволяют настроить такие параметры как объем, поворот, размер и так далее.

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

ShadowFormat – тень фигуры

Доступ к классу ShadowFormat осуществляется через свойство Shadow коллекции Shapes. Всего у класса около 10 свойств, которые представляют интерес и один метод.

Свойства

ForeColor— Возвращает или задает объект ColorFormat, представляющий цвет переднего плана для заполнения, линии или тени.

OffsetXи OffsetY– Свойства возвращают или устанавливают горизонтальное или вертикальное смещение в пунктах для тени. Числовые значения могут быть как положительными, так и отрицательными.

Transparency— Возвращает или устанавливает степень прозрачности тени как значение от 0,0 (непрозрачный) и 1.0 (прозрачный).

Type— Возвращает или задает тип тени. Значение константы MsoShadowType.

Visible– Показать (True) или скрыть (False) тень. Если цвет тени не задан, то она будет серой.

Blur— Возвращает или устанавливает уровень размытия для тени. Числовое значение.

RotateWithShape– Свойство определяет, поворачивать ли тень (true) при повороте фигуры или нет (false). Чтение и запись.

Size— Возвращает или задает ширину тени.

Методы

IncrementOffsetX(Increment) и IncrementOffsetY(Increment) – Методы изменяют горизонтальное или вертикальное смещение тени на заданное число пунктов.

Ниже я привожу два примера программного кода, который работает под управлением сервера сценариев Windows Script Host. После, я дам небольшое пояснение к скриптам.

Пример программного кода на языке VBScript:

' ********************************************************************' Объект ShadowFormat' параметры тени фигуры' ShadowFormat.vbs' ******************************************************************** OptionExplicit dim oWord, oDoc, i, iCount Set oWord = CreateObject("Word.Application") ' создаем ссылку на Word.ApplicationSet oDoc = oWord.Documents' создаем ссылку на коллекцию DocumentsoDoc.Add()oWord.Visible = true dim shpCanvasSet shpCanvas = oDoc(1).Shapes ' создаем ссылку на коллекцию Shapes '--------------------------------------------------------------------------------' вставляем 9 фигур в документ'--------------------------------------------------------------------------------iCount = 10for i = 1 to 9 shpCanvas.AddShape 1, iCount, 50, 40, 40 iCount = iCount + 65next ' задаем различные параметры тени фигурiCount = -40for i =1 to 9 with shpCanvas(i).Shadow .OffsetX = iCount' смещение по оси Х .ForeColor.RGB = RGB(0,0,255) ' цвет тени фигуры .Visible = true' делаем тень фигуры видимойendwith iCount = iCount + 10next '--------------------------------------------------------------------------------iCount = 10for i = 1 to 9 shpCanvas.AddShape 1, iCount, 120, 40, 40 iCount = iCount + 65next iCount = -40for i =10 to 18 with shpCanvas(i).Shadow .OffsetY = iCount' смещение по оси Y тень фигуры .ForeColor.RGB = RGB(0,100,255) .Visible = trueendwith iCount = iCount + 10next '--------------------------------------------------------------------------------iCount = 10for i = 1 to 9 shpCanvas.AddShape 1, iCount, 200, 40, 40 iCount = iCount + 65next iCount = 0.0for i =19 to 27 with shpCanvas(i).Shadow .OffsetY = 10 .Transparency = iCount ' задаем степень прозрачности тени фигуры .Visible = trueendwith iCount = iCount + 0.1next '--------------------------------------------------------------------------------iCount = 10for i = 1 to 9 shpCanvas.AddShape 1, iCount, 270, 40, 40 iCount = iCount + 65nextiCount = 10for i = 1 to 9 shpCanvas.AddShape 1, iCount, 320, 40, 40 iCount = iCount + 65nextiCount = 10for i = 1 to 2 shpCanvas.AddShape 1, iCount, 370, 40, 40 iCount = iCount + 65next iCount = 1for i =28 to 47 with shpCanvas(i).Shadow .OffsetY = 10 .Type = iCount .Visible = trueendwith iCount = iCount + 1next

Пример программного кода на языке JScript:

// ********************************************************************// Объект ShadowFormat// параметры тени фигуры// ShadowFormat.js// ******************************************************************** var oWord, oDoc, i, iCount1 oWord = WScript.CreateObject("Word.Application");// создаем ссылку на Word.ApplicationoDoc = oWord.Documents;// создаем ссылку на коллекцию DocumentsoDoc.Add();oWord.Visible=true; var shpCanvas;shpCanvas = oDoc(1).Shapes;// создаем ссылку на коллекцию Shapes //--------------------------------------------------------------------------------// вставляем 9 фигур в документ//--------------------------------------------------------------------------------iCount1 =10;for(i =1; i<=9; i++){ shpCanvas.AddShape(1, iCount1,50,40,40); iCount1 +=65;} // задаем различные параметры тени фигурiCount1 =-40;for(i =1; i<=9; i++){ with(shpCanvas(i).Shadow){ OffsetX = iCount1;// смещение по оси Х ForeColor.RGB= rgbToHex(0,0,255);// цвет тени фигуры Visible =true;// делаем тень фигуры видимой} iCount1 +=10;} //--------------------------------------------------------------------------------iCount1 =10;for(i =1; i<=9; i++){ shpCanvas.AddShape(1, iCount1,120,40,40); iCount1 +=65;} iCount1 =-40;for(i =10; i<=18; i++){ with(shpCanvas(i).Shadow){ OffsetY = iCount1;// смещение по оси Y тень фигуры ForeColor.RGB= rgbToHex(0,100,255); Visible =true;} iCount1 +=10;} //--------------------------------------------------------------------------------iCount1 =10;for(i =1; i<=9; i++){ shpCanvas.AddShape(1, iCount1,200,40,40); iCount1 +=65;} iCount1 =0.0;for(i =19; i<=27; i++){ with(shpCanvas(i).Shadow){ OffsetY =10; Transparency = iCount1;// задаем степень прозрачности тени фигуры Visible =true;} iCount1 +=0.1;} //--------------------------------------------------------------------------------iCount1 =10;for(i =1; i<=9; i++){ shpCanvas.AddShape(1, iCount1,270,40,40); iCount1 +=65;}iCount1 =10;for(i =1; i<=9; i++){ shpCanvas.AddShape(1, iCount1,320,40,40); iCount1 +=65;}iCount1 =10;for(i =1; i<=2; i++){ shpCanvas.AddShape(1, iCount1,370,40,40); iCount1 +=65;} iCount1 =1;for(i =28; i<=47; i++){ with(shpCanvas(i).Shadow){ OffsetY =10; Type = iCount1; Visible =true;} iCount1 +=1;} //*****************************************************// Функция преобразования RGB цвета в// десятичное значение//*****************************************************function rgbToHex (r, g, b){r = r.toString(16);g = g.toString(16);b = b.toString(16);if(r.length==1) r ='0'+ r;if(g.length==1) g ='0'+ g;if(b.length==1) b ='0'+ b; myStr =(b + g + r).toUpperCase()return parseInt("0x".concat(myStr))}

Смотрите, оба сценария практически идентичны, только в скрипте под Jscript есть дополнительная пользовательская функция rgbToHex, ее логика работы идентична функции RGB в скрипте под VBScript. Вставка фигур происходит циклично, в несколько этапов, сам результат работы скриптов, которые задают различные параметры тени для фигур в документе видно на рисунке выше.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий