Biến đổi thao tác

API Google Trang trình bày cho phép bạn thao tác với vị trí, kích thước và hướng của PageElement (hộp văn bản, hình ảnh, bảng và các hình dạng cơ bản) trên một trang, trong khi vẫn giữ các dòng điểm thẳng, điểm duy trì và đường thẳng song song. Các thuốc này được gọi là affin phép biến đổi. Các ví dụ ở đây trình bày một số biến đổi phần tử trang phổ biến bằng cách sử dụng presentations.batchUpdate .

Những ví dụ này sử dụng các biến sau:

  • PRESENTATION_ID – Cho biết nơi bạn cung cấp bản trình bày Mã nhận dạng. Bạn có thể khám phá giá trị cho mã nhận dạng này từ URL của bản trình bày.
  • PAGE_ID – Cho biết vị trí bạn cung cấp đối tượng trang Mã nhận dạng. Bạn có thể truy xuất giá trị cho việc này từ URL hoặc bằng cách sử dụng yêu cầu đọc API.
  • PAGE_ELEMENT_ID—Cho biết nơi bạn cung cấp trang mã đối tượng phần tử. Bạn có thể chỉ định ID này cho các phần tử bạn tạo (với một số hạn chế) hoặc cho phép API Trang trình bày tự động tạo trang trình bày. Mã phần tử có thể được truy xuất thông qua yêu cầu đọc API.

Những ví dụ này được trình bày dưới dạng yêu cầu HTTP nhằm đảm bảo trung lập về ngôn ngữ. Để tìm hiểu cách triển khai việc cập nhật theo lô bằng nhiều ngôn ngữ bằng Google API thư viện ứng dụng, hãy xem Thêm hình dạng và văn bản.

Ví dụ về hình dạng mũi tên

Đối với các ví dụ dưới đây, giả sử rằng tồn tại trang mẫu hình mũi tên có kích thước như sau và biến đổi dữ liệu (có thể tìm được bằng presentations.pages.get yêu cầu phương thức). Hình dạng trong ví dụ này sử dụng phép đo unit EMU (Đơn vị hệ mét bằng tiếng Anh) và pt (điểm).

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

Căn chỉnh một phần tử với một phần tử khác

Nội dung sau đây presentations.batchUpdate mã mẫu cho biết cách sử dụng CreateShapeRequest để tạo hình dạng mới ở đúng vị trí được căn chỉnh với ví dụ về hình dạng mũi tên trên trang. Trong cả hai trường hợp, X và Y toạ độ của góc trên bên trái của hình dạng mới phải được tính toán.

Yêu cầu đầu tiên tạo một hình chữ nhật 100 x 50 pt được căn chỉnh ở bên trái đường viền của hình mũi tên, nhưng được đặt ở vị trí 50 pt (50 * 12.700 = 635.000 EMU) bên dưới cạnh trên của mũi tên. Toạ độ X của hình chữ nhật mới phải là giống như toạ độ X của mũi tên để căn chỉnh đường viền trái. Y toạ độ của mũi tên giống với toạ độ Y của mũi tên cộng với 50 pt, vì khoảng cách được đo từ đầu mũi tên. Toạ độ của hình chữ nhật là do đó:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

Yêu cầu thứ hai tạo một vòng tròn rộng 40 pt có cùng chiều ngang như hình mũi tên mẫu, nhưng được định vị 100 pt (1.270.000 EMU) đến bên phải cạnh phải của mũi tên. Toạ độ X của đường tròn là tổng của toạ độ X của mũi tên, chiều rộng của mũi tên và 100 pt. Thực thi đường giữa Việc căn chỉnh cho vòng tròn mới đòi hỏi phải tính đến chiều cao của mũi tên và vòng tròn. Toạ độ Y của đường tròn là toạ độ Y của mũi tên cộng với một nửa chiều cao của mũi tên trừ đi một nửa chiều cao của vòng tròn. Trong cả hai trường hợp, hệ số tỷ lệ liên kết với mũi tên cũng phải được tính đến, vì chúng ảnh hưởng đến chiều rộng và chiều cao được kết xuất của mũi tên. của vòng kết nối do đó, toạ độ là:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

Sau đây là giao thức yêu cầu căn chỉnh một phần tử với một phần tử khác:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

Di chuyển phần tử

Nội dung sau đây presentations.batchUpdate mã mẫu cho biết cách sử dụng UpdatePageElementTransformRequest để dịch phần tử trang ví dụ về hình dạng mũi tên sang hai cách khác nhau.

Yêu cầu đầu tiên trong lô di chuyển mũi tên đến (X,Y) = (2000000, 150000) Toạ độ EMU (sử dụng phương pháp dịch tuyệt đối applyMode). Yêu cầu thứ hai trong lô di chuyển mũi tên từ đó, lần này là 40.000 EMU sang phải và 35.000 EMU trở lên (sử dụng bản dịch tương đối applyMode). Ma trận biến đổi1 được sử dụng được tạo để tránh làm thay đổi kích thước và hướng của phần tử.

Sau khi thực thi cả hai yêu cầu, góc trên bên trái của mũi tên nằm ở (X,Y) = (2040000, 115000) Toạ độ EMU.

Sau đây là giao thức yêu cầu di chuyển một phần tử:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Phản ánh một yếu tố

Nội dung sau đây presentations.batchUpdate mã mẫu cho biết cách sử dụng UpdatePageElementTransformRequest để phản ánh phần tử trang hình dạng mũi tên mẫu theo chiều ngang dọc theo tâm điểm mà không làm thay đổi vị trí của văn bản trên trang hoặc điều chỉnh theo tỷ lệ.

Bạn có thể thực hiện việc này bằng cách sử dụng tính năng phản chiếu cơ bản biến đổi trong tham chiếu của phần tử . Để cho rõ ràng, dịch chuyển và phản chiếu khung tham chiếu được hiển thị với ba lệnh gọi riêng biệt đến hàm phương thức UpdatePageElementTransformRequest, nhưng sẽ hiệu quả hơn nếu tính trước tích số của các phép biến đổi này ma trận rồi áp dụng sản phẩm đó dưới dạng một yêu cầu duy nhất.

Để bản dịch chuyển đổi, tâm của hình mũi tên sẽ được di chuyển đến và ra khỏi gốc. Giá trị thông số đều được thể hiện dưới dạng phép tính để cho rõ ràng.

Sau đây là giao thức yêu cầu để phản ánh một phần tử:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Đổi kích thước phần tử

Nội dung sau đây presentations.batchUpdate mã mẫu cho biết cách sử dụng UpdatePageElementTransformRequest phương pháp điều chỉnh tỷ lệ phần tử trang hình dạng mũi tên mẫu thành 50% rộng hơn và chỉ có 80% chiều cao hiện tại, trong khi vẫn giữ tâm của mũi tên ở cùng vị trí và giữ nguyên hướng của nó.

Điều này được thực hiện bằng cách sử dụng tỷ lệ cơ bản biến đổi trong tham chiếu của phần tử . Để cho rõ ràng, dịch chuyển và chia tỷ lệ khung tham chiếu được hiển thị với ba lệnh gọi riêng biệt đến hàm phương thức UpdatePageElementTransformRequest, nhưng sẽ hiệu quả hơn nếu tính trước tích số của các phép biến đổi này ma trận rồi áp dụng sản phẩm đó dưới dạng một yêu cầu duy nhất.

Để bản dịch chuyển đổi, tâm của hình mũi tên sẽ được di chuyển đến và ra khỏi gốc. Giá trị thông số đều được thể hiện dưới dạng phép tính để cho rõ ràng.

Sau đây là giao thức yêu cầu để đổi kích thước một phần tử:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Xoay một phần tử quanh tâm của phần tử đó

Nội dung sau đây presentations.batchUpdate mã mẫu cho biết cách sử dụng UpdatePageElementTransformRequest phương pháp xoay phần tử trang hình dạng mũi tên mẫu 35 độ ngược chiều kim đồng hồ, trong khi giữ tâm của mũi tên ở cùng một vị trí và duy trì kích thước của quảng cáo.

Điều này được thực hiện bằng cách sử dụng xoay cơ bản biến đổi trong tham chiếu của phần tử . Để cho rõ ràng, dịch chuyển và xoay khung tham chiếu được hiển thị với ba lệnh gọi riêng biệt đến hàm phương thức UpdatePageElementTransformRequest, nhưng sẽ hiệu quả hơn nếu tính trước tích số của các phép biến đổi này ma trận rồi áp dụng sản phẩm đó dưới dạng một yêu cầu duy nhất

Để bản dịch chuyển đổi, tâm của hình mũi tên sẽ được di chuyển đến và ra khỏi gốc. Giá trị thông số đều được thể hiện dưới dạng phép tính để cho rõ ràng.

Sau đây là giao thức yêu cầu xoay một phần tử quanh tâm của phần tử đó:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}