Menggambar Bentuk dan Tanda Air
Menggambar Bentuk dan Watermark
Dokumen Word menyimpan AutoShapes, gambar, kotak teks, dan objek OLE dalam lapisan gambar terpisah, terpisah dari aliran teks paragraf/run. Aspose.Words FOSS untuk .NET memodelkan lapisan ini dengan kelas Shape (objek gambar konkret) dan basis abstraknya ShapeBase, keduanya merupakan bagian dari namespace Aspose.Words.Drawing. Panduan ini mencakup model bentuk, menyisipkan gambar dan AutoShapes, penempatan dan pembungkus, isian dan efek, pengelompokan, serta watermark.
Model Bentuk dan ShapeBase
Shape — sealed, dan tipe yang Anda gunakan secara langsung — mewakili sebuah AutoShape, kotak teks, bentuk bebas, objek OLE, kontrol ActiveX, atau gambar di lapisan gambar. Ia diturunkan dari ShapeBase abstrak, yang menyediakan properti yang dibagikan oleh setiap objek gambar: posisi (Left, Top, Width, Height, Rotation), nilai enum ShapeType, dan sub-objek pemformatan seperti Fill, Stroke, ShadowFormat, Glow, dan Reflection. GroupShape (juga sebuah ShapeBase) mewakili sekelompok bentuk yang diperlakukan sebagai satu unit. Buat bentuk mandiri secara langsung dengan new Shape(doc, shapeType), di mana shapeType adalah nilai ShapeType seperti Rectangle, Ellipse, Star, atau TextBox, kemudian sisipkan ke dalam pohon dengan DocumentBuilder.InsertNode(node).
Menyisipkan Gambar dan AutoShapes dengan DocumentBuilder
Untuk gambar secara khusus, DocumentBuilder.InsertImage adalah jalur yang lebih langsung: overload menerima sebuah Image, jalur file, Stream, atau array byte mentah, dengan overload tambahan yang menetapkan width/height secara eksplisit atau penempatan lengkap (horzPos, left, vertPos, top, width, height, wrapType). Shape yang dihasilkan mengekspos data gambarnya melalui properti ImageData — ImageData.SetImage(...) untuk mengganti gambar, plus CropTop/CropBottom/CropLeft/CropRight, Brightness, Contrast, dan GrayScale untuk penyesuaian dasar. Instance GroupShape dibuat dengan DocumentBuilder.InsertGroupShape(shapes).
Penempatan dan Pembungkus Teks
Penempatan sebuah bentuk relatif terhadap halaman dikendalikan oleh RelativeHorizontalPosition dan RelativeVerticalPosition (masing-masing relatif terhadap Page, Margin, Column, atau jangkar serupa), bersama dengan properti offset Left/Top. HorizontalAlignment dan VerticalAlignment menangani penyelarasan relatif sederhana. Bagaimana teks di sekitarnya mengalir di sekitar bentuk diatur dengan WrapType dan, untuk pembungkus sisi-spesifik, WrapSide. IsInline melaporkan apakah bentuk mengalir bersama teks (inline) atau mengambang secara mandiri.
Isi, Garis, dan Efek
Shape.Fill (sebuah objek Fill) mengontrol bagaimana interior bentuk diwarnai: Fill.Solid(color) untuk warna datar, Fill.OneColorGradient(...) / Fill.TwoColorGradient(...) untuk gradien, Fill.Patterned(patternType) untuk pola, dan Fill.SetImage(...) untuk isian gambar; FillType melaporkan mana yang aktif. Garis tepi diatur melalui properti Stroke, dan efek visual disajikan sebagai objek pemformatan terpisah — ShadowFormat, Glow (GlowFormat), Reflection (ReflectionFormat), dan SoftEdge (SoftEdgeFormat) — masing-masing dengan metode Remove()nya untuk menghapus efek.
Pengelompokan Bentuk dan Kotak Teks
Beberapa bentuk dapat digabungkan menjadi sebuah GroupShape, yang pada dasarnya berperilaku sebagai satu ShapeBase dengan Fill, ShadowFormat, Glow, dan Reflection miliknya sendiri. Untuk sebuah bentuk yang memuat teks, Shape.TextBox (sebuah objek TextBox) memperlihatkan tata letak khusus teks: InternalMarginLeft/Right/Top/Bottom untuk padding, FitShapeToText untuk mengubah ukuran bentuk secara otomatis, LayoutFlow untuk arah teks, dan VerticalAnchor untuk perataan teks vertikal di dalam bentuk.
Watermarks
Document.Watermark (sebuah objek Watermark) mengelola watermark seluruh dokumen yang independen dari bentuk manapun. Panggil Watermark.SetText(text) atau SetText(text, options) untuk watermark teks, atau SetImage(...) untuk watermark gambar, dan Watermark.Remove() untuk menghapusnya. Watermark.Type melaporkan WatermarkType saat ini (Text, Image, atau None). TextWatermarkOptions mengontrol FontFamily, FontSize, Color, dan Layout (WatermarkLayout.Horizontal atau Diagonal); ImageWatermarkOptions mengontrol Scale dan IsWashout.
Tips dan Praktik Terbaik
- Gunakan
ShapeBasesaat menulis kode yang harus berfungsi pada kedua instanceShapetunggal danGroupShape; gunakanShapesecara langsung ketika Anda memerlukan anggota khusus gambar atau AutoShape sepertiImageDataatauChart. - Atur
RelativeHorizontalPosition/RelativeVerticalPositionbersama denganWrapTypesaat mengapungkan sebuah bentuk — bentuk inline (default untukInsertImage) mengabaikan properti posisi sampai Anda menjadikannya mengapung. - Lebih pilih
Document.Watermarkuntuk watermark satu dokumen secara keseluruhan daripada memasukkan dan memposisikanShapesecara manual di belakang teks. - Hapus efek dengan metode
Remove()objeknya (ShadowFormat.Remove(),ReflectionFormat.Remove()) alih-alih mengatur properti individual menjadi nol. - Periksa
Shape.HasImage,Shape.HasChart, atauShape.IsGroupsebelum mengaksesImageData,Chart, atau anggota khusus grup, karenaShapedapat mewakili salah satu dari beberapa jenis objek gambar.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Mengatur Left/Top pada sebuah bentuk tidak memberikan efek yang terlihat | Bentuk tersebut masih inline (IsInline == true) | Setel WrapType ke nilai floating dan setel RelativeHorizontalPosition/RelativeVerticalPosition agar properti penempatan berpengaruh |
Shape.ImageData melempar atau kosong | Bentuk tersebut bukan bentuk gambar | Periksa Shape.HasImage sebelum membaca ImageData |
| Teks watermark tidak cocok dengan font yang diminta | Tidak ada TextWatermarkOptions yang disediakan | Berikan sebuah instance TextWatermarkOptions dengan FontFamily diatur ke Watermark.SetText(text, options) |
| Bentuk anak dalam grup tidak bergerak bersama | Anak-anak dipindahkan secara langsung alih-alih melalui grup | Pindahkan atau ubah ukuran GroupShape itu sendiri sehingga transformasi koordinatnya berlaku untuk semua anak |
FAQ
Apa perbedaan antara Shape dan ShapeBase?
ShapeBase adalah kelas dasar abstrak yang dibagi oleh Shape dan GroupShape. Gunakan ShapeBase dalam kode yang harus menangani kedua jenis secara seragam; gunakan Shape ketika Anda memerlukan anggota khusus untuk satu objek gambar, seperti ImageData atau Chart.
Bagaimana cara menambahkan gambar ke dokumen?
Gunakan salah satu overload DocumentBuilder.InsertImage — berikan sebuah Image, jalur file, Stream, atau array byte, secara opsional dengan width/height atau argumen penempatan lengkap.
Bagaimana cara membuat bentuk mengapung alih-alih berada sejajar dengan teks?
Atur WrapType ke nilai non-inline dan atur RelativeHorizontalPosition / RelativeVerticalPosition sehingga offset Left/Top bentuk diinterpretasikan relatif terhadap halaman, margin, atau kolom.
Apakah saya dapat menambahkan watermark teks dan gambar sekaligus?
Document.Watermark.Type mencerminkan tipe watermark saat ini; menetapkan watermark baru dengan SetText atau SetImage menggantikan apa pun yang sebelumnya ada, sehingga sebuah dokumen hanya dapat memiliki satu watermark aktif pada satu waktu.
Bagaimana cara menghapus bayangan atau refleksi dari bentuk?
Panggil Remove() pada objek pemformatan yang sesuai — Shape.ShadowFormat.Remove() atau Shape.Reflection.Remove().
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Shape | Sebuah objek lapisan gambar tunggal — AutoShape, gambar, kotak teks, atau objek OLE. |
ShapeBase | Kelas dasar abstrak yang dibagikan oleh Shape dan GroupShape. |
GroupShape | Sekelompok bentuk yang diperlakukan sebagai satu objek gambar. |
DocumentBuilder.InsertImage | Menyisipkan bentuk gambar pada kursor, dengan ukuran dan penempatan opsional. |
ImageData | Data gambar dan penyesuaian gambar (pemotongan, kecerahan, kontras) pada Shape. |
Fill | Pemformatan isian interior — padat, gradien, pola, atau gambar. |
RelativeHorizontalPosition / RelativeVerticalPosition | Apa yang menjadi acuan pengukuran posisi bentuk mengambang. |
WrapType / WrapSide | Bagaimana teks di sekitarnya membungkus bentuk. |
TextBox | Pengaturan tata letak teks untuk bentuk yang berisi teks. |
Document.Watermark | Mengelola watermark teks atau gambar pada dokumen. |
TextWatermarkOptions / ImageWatermarkOptions | Mengonfigurasi tampilan watermark teks atau gambar. |