Доброго времени суток всем подписчикам и читателям блога 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 ' ******************************************************************** Option Explicit dim oWord, oDoc, i, iCount Set oWord = CreateObject("Word.Application") ' создаем ссылку на Word.Application Set oDoc = oWord.Documents ' создаем ссылку на коллекцию Documents oDoc.Add() oWord.Visible = true dim shpCanvas Set shpCanvas = oDoc(1).Shapes ' создаем ссылку на коллекцию Shapes '-------------------------------------------------------------------------------- ' вставляем 9 фигур в документ '-------------------------------------------------------------------------------- iCount = 10 for i = 1 to 9 shpCanvas.AddShape 1, iCount, 50, 40, 40 iCount = iCount + 65 next ' задаем различные параметры тени фигур iCount = -40 for i =1 to 9 with shpCanvas(i).Shadow .OffsetX = iCount ' смещение по оси Х .ForeColor.RGB = RGB(0,0,255) ' цвет тени фигуры .Visible = true ' делаем тень фигуры видимой end with iCount = iCount + 10 next '-------------------------------------------------------------------------------- iCount = 10 for i = 1 to 9 shpCanvas.AddShape 1, iCount, 120, 40, 40 iCount = iCount + 65 next iCount = -40 for i =10 to 18 with shpCanvas(i).Shadow .OffsetY = iCount ' смещение по оси Y тень фигуры .ForeColor.RGB = RGB(0,100,255) .Visible = true end with iCount = iCount + 10 next '-------------------------------------------------------------------------------- iCount = 10 for i = 1 to 9 shpCanvas.AddShape 1, iCount, 200, 40, 40 iCount = iCount + 65 next iCount = 0.0 for i =19 to 27 with shpCanvas(i).Shadow .OffsetY = 10 .Transparency = iCount ' задаем степень прозрачности тени фигуры .Visible = true end with iCount = iCount + 0.1 next '-------------------------------------------------------------------------------- iCount = 10 for i = 1 to 9 shpCanvas.AddShape 1, iCount, 270, 40, 40 iCount = iCount + 65 next iCount = 10 for i = 1 to 9 shpCanvas.AddShape 1, iCount, 320, 40, 40 iCount = iCount + 65 next iCount = 10 for i = 1 to 2 shpCanvas.AddShape 1, iCount, 370, 40, 40 iCount = iCount + 65 next iCount = 1 for i =28 to 47 with shpCanvas(i).Shadow .OffsetY = 10 .Type = iCount .Visible = true end with iCount = iCount + 1 next |
Пример программного кода на языке JScript:
// ******************************************************************** // Объект ShadowFormat // параметры тени фигуры // ShadowFormat.js // ******************************************************************** var oWord, oDoc, i, iCount1 oWord = WScript.CreateObject("Word.Application"); // создаем ссылку на Word.Application oDoc = oWord.Documents; // создаем ссылку на коллекцию Documents oDoc.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. Вставка фигур происходит циклично, в несколько этапов, сам результат работы скриптов, которые задают различные параметры тени для фигур в документе видно на рисунке выше.