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

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

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

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

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

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

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

настройка параметров фигурв в редакторе Word 2007

Хорошо, полагаю, память я немного освежил, как видим, из всего набора различных параметров, класс 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. Вставка фигур происходит циклично, в несколько этапов, сам результат работы скриптов, которые задают различные параметры тени для фигур в документе видно на рисунке выше.

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