Có hai cách khác nhau để bạn có thể nhận và thay đổi kích thước cũng như vị trí của phần tử trang:
- Sử dụng các hàm getter và setter để xác định kích thước và vị trí.
- Điều chỉnh phép biến đổi affine, sử dụng các hàm
getTransform()
vàsetTransform()
mà vẫn giữ nguyên kích thước vốn có.
Đọc thuộc tính phần tử trang
Như được thể hiện trong hình, kích thước và vị trí được đo theo hộp giới hạn của phần tử trang được kết xuất khi không có chế độ xoay:
- Trái và Trên cùng: được đo từ góc trên bên trái của trang đến
góc trên bên trái của hộp giới hạn không xoay. Sử dụng
getLeft()
vàgetTop()
để đọc các giá trị. - Chiều rộng và Chiều cao: chiều rộng và chiều cao của hộp giới hạn không xoay.
Sử dụng
getWidth()
vàgetHeight()
để đọc các giá trị. - Xoay: xoay theo chiều kim đồng hồ so với đường thẳng đứng xung quanh
tâm của hộp giới hạn. Sử dụng
getRotation()
để đọc giá trị.
Tất cả độ dài được tính bằng điểm (pt). Độ xoay được đo theo độ (°).
Đặt thuộc tính phần tử trang
Bạn có thể đặt kích thước và vị trí của một phần tử trang khi bạn tạo phần tử đó bằng cách sử dụng
một phương thức chèn như insertShape()
. Đối với hình dạng hiện có, bạn có thể đặt
kích thước, vị trí và chế độ xoay; bạn cũng có thể đặt tỷ lệ của một phần tử thành
đổi kích thước hoặc phản ánh vị trí dọc theo một trong các cạnh của hình ảnh đó.
Khi tạo
Bạn có thể cung cấp thông tin về vị trí và kích thước khi tạo phần tử trang.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
+ shape.getTop() + 'pt; Width: '
+ shape.getWidth() + 'pt; Height: '
+ shape.getHeight() + 'pt; Rotation: '
+ shape.getRotation() + ' degrees.');
Tập lệnh ở trên tạo ra một hình dạng trên trang trình bày đầu tiên của bản trình bày đang hoạt động có vị trí và kích thước đã chỉ định, đồng thời đọc thông tin vị trí và kích thước của hình dạng. Nhật ký dự kiến là:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Kích thước, vị trí và chế độ xoay
Bạn có thể cập nhật kích thước và vị trí của một phần tử trang sau khi tạo:
- Sử dụng
setLeft()
vàsetTop()
để đặt vị trí góc trên bên trái của hộp giới hạn không xoay. - Sử dụng
setWidth()
vàsetHeight()
để đặt chiều rộng và chiều cao được kết xuất của đường viền . - Dùng
setRotation()
để đặt chế độ xoay theo chiều kim đồng hồ của hộp giới hạn xung quanh giữa chiến dịch.
Tập lệnh sau đây sẽ tạo một hình dạng trên trang trình bày đầu tiên của bản trình bày đang hoạt động, sử dụng phương thức setter để cập nhật vị trí, kích thước và chế độ xoay, đồng thời đọc vị trí và kích thước của hình dạng.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
+ 'pt; Top: ' + shape.getTop()
+ 'pt; Width: ' + shape.getWidth()
+ 'pt; Height: ' + shape.getHeight()
+ 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');
Kết quả nhật ký dự kiến từ tập lệnh này như sau:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Bạn có thể sử dụng phương thức setter về kích thước, vị trí và phương thức xoay theo bất kỳ thứ tự hoặc cách kết hợp nào. Thay thế dòng thứ ba ở trên bằng tập lệnh sau sẽ cho ra kết quả tương tự:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Chuyển tỷ lệ
Thay vì sử dụng setWidth()
và setHeight()
ở trên để đặt kích thước của hình dạng
thành giá trị tuyệt đối, bạn có thể sử dụng scaleWidth()
và scaleHeight()
để kéo giãn hoặc
ép một phần tử trang theo hệ số tỷ lệ tương đối.
shape.scaleHeight(0.5).scaleWidth(2);
Hình bên dưới mô tả cách mã phía trên hoạt động trên hình vuông xoay 45°. Lưu ý rằng góc trên bên trái của hộp giới hạn được cố định trong khi chuyển tỷ lệ.
Hình bóng phản chiếu dọc theo cạnh
Đối số trong scaleWidth()
và scaleHeight()
có thể mang giá trị âm nên chúng có thể
được dùng để lật phần tử trang theo chiều ngang hoặc chiều dọc.
shape.scaleWidth(-1); // Flip horizontally along the left edge of the bounding box.
shape.scaleHeight(-1); // Flip vertically along the top edge of the bounding box.
Hình bên dưới mô tả cách mã trên hoạt động trên hình dạng xoay 45°. Lưu ý rằng phần tử trang bị lật dọc theo một trong các cạnh của hộp giới hạn nhưng không trung tâm của thiết bị.
Xoay đường kẻ
Giống như các thành phần khác của trang, xoay của đường kẻ không phải là góc dọc của
đường thẳng mà còn xoay vòng giới hạn của nó. Khi bạn tạo một đường bằng
điểm xuất phát và điểm kết thúc đã chỉ định, góc xoay của điểm đó luôn bằng 0°. Kéo
các điểm cuối của đường trong giao diện người dùng của Google Trang trình bày cũng thay đổi góc thẳng đứng
như kích thước và vị trí của hộp giới hạn, nhưng không thay đổi
độ xoay của màn hình. Việc sử dụng setRotation()
sẽ xoay hộp giới hạn của đường kẻ
thay đổi hiệu quả góc thẳng đứng. Vì vậy, 2 dòng có thể
có cùng góc nhìn dọc, nhưng các hộp giới hạn khác nhau và do đó
kích thước, vị trí và giá trị xoay khác nhau.
Các điểm hạn chế
Một số phương thức định kích thước và định vị không tương thích với một số loại trang phần tử. Bảng dưới đây tóm tắt các phương thức không tương thích với một số loại phần tử trang nhất định.
Phương thức | Hình dạng | Video | Bảng |
---|---|---|---|
getHeight(), getWidth() | ✔ | ✔ | NO (trả về giá trị rỗng) |
setHeight(), setWidth() | ✔ | ✔ | KHÔNG |
setRotation() | ✔ | KHÔNG | KHÔNG |
scaleHeight(), scaleWidth() | ✔ | ✔ | KHÔNG |
Tất cả phương thức định kích thước và định vị có thể cung cấp kết quả không mong muốn nếu trang có tính cắt. Tất cả các giới hạn có thể thay đổi. Kiểm tra tài liệu tham khảo cho cập nhật thông tin.
Sử dụng phép biến đổi affin
Đối với chế độ kiểm soát nâng cao, kích thước và vị trí của một phần tử trang cũng có thể là được tính toán và điều chỉnh thông qua kích thước vốn có (gốc) và biến đổi affin.
Google Apps Script cung cấp giao diện tương tự để sử dụng tính năng biến đổi affine dưới dạng API Google Trang trình bày.
- Để đọc,
article giải thích
các khái niệm biến đổi affine và cách suy ra kích thước được kết xuất từ giá trị vốn có
(gốc) và biến đổi cho các phần tử trang. Trong Apps Script, hãy sử dụng
getInherentWidth()
vàgetInherentHeight()
cho kích thước gốc của trang các phần tử;getTransform()
để biến đổi affin của các phần tử trang.
- Để viết,
article mô tả
cách định kích thước và định vị các phần tử trang bằng cách sử dụng phép biến đổi affine để đạt được
điều chỉnh tỷ lệ, xoay, phản chiếu, v.v. Trong Apps Script, hãy sử dụng
setTransform()
để đặt biến đổi affin của các phần tử trang (tương tự như chế độ TUYỆT ĐỐI);preconcatenateTransform()
để nối trước một phép biến đổi affine với biến đổi hiện tại của các phần tử trang (tương tự như chế độ RELATIVE).
Tập lệnh sau đây tạo ra một hình dạng, thiết lập sự biến đổi của hình dạng, đọc kích thước vốn có của nó, và đọc phép biến đổi affin.
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
.setScaleX(2)
.setScaleY(1)
.setTranslateX(100)
.setTranslateY(200)
.build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
+ 'pt; Inherent height: '
+ shape.getInherentHeight() + 'pt.');
Kết quả nhật ký dự kiến từ tập lệnh này như sau:
Inherent width: 236.2pt; Inherent height: 236.2pt.
Hình dạng thu được sẽ có sự biến đổi, cũng như kích thước và vị trí được kết xuất như sau:
AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.