Bekerja dengan status grafis

Klip dan ubah status grafis file PS

 

Mengelola status grafis dalam dokumen PS (setara dengan kanvas di XPS) adalah salah satu fitur utama yang ditawarkan oleh Aspose.Page untuk .NET. Pada contoh di bawah ini Anda akan mengetahui cara:

  • Simpan status grafik saat ini, buat status grafik baru, dan atur sebagai saat ini.

  • Menerjemahkan, menskalakan, memutar, atau menggeser status grafik saat ini.

  • Tetapkan transformasi kompleks untuk status grafis saat ini.

  • Atur cat dan guratan untuk kondisi grafis saat ini.

  • Isi dan gambar jalur grafis.

  • Klip status grafis.

  • Kembalikan keadaan grafis sebelumnya.

Untuk mengubah status grafis file PS, ikuti panduan berikutnya:

  1. Buat file PS menggunakan Kelas PsDocument .
  2. Buat jalur grafis persegi panjang.
  3. Simpan status grafis saat ini, buat status grafis baru dan atur sebagai yang terbaru dengan WriteGraphicsSave() Metode.
  4. Terjemahkan status grafis saat ini menggunakan Metode Translate() .
  5. Atur cat dalam kondisi grafis saat ini dengan Metode SetPaint() .
  6. Isi jalur grafis melalui metode Fill() .
  7. Pulihkan status grafis sebelumnya dengan Metode WriteGraphicsRestore .
  8. Ulangi langkah 3-7 untuk menambahkan lebih banyak status grafis dengan transformasi lain menggunakan Scale() , Putar() , Shear() dan Transform() Metode.
  9. Tutup halaman saat ini melalui metode ClosePage() .
  10. Simpan dokumen PS yang dibuat menggunakan Metode PsDocument.Save() .

Status grafik file PS Transformasi kode C#

    using Aspose.Page.EPS;
    using Aspose.Page.EPS.Device;    
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.IO;
    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_WorkingWithCanvas();

    //Create output stream for PostScript document
    using (Stream outPsStream = new FileStream(dataDir + "Transformations_outPS.ps", FileMode.Create))
    {
        //Create save options with default values
        PsSaveOptions options = new PsSaveOptions();

        // Create new 1-paged PS Document
        PsDocument document = new PsDocument(outPsStream, options, false);
        
        //Create graphics path from the rectangle
        System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
        path.AddRectangle(new System.Drawing.RectangleF(0, 0, 150, 100));
            
    		///////////////////// Translation //////////////////////////////////////////////////////////////////////

        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Displace current graphics state on 250 to the right. So we add translation component to the current transformation.
        document.Translate(250, 0);

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Blue));

        //Fill the second rectangle in the current graphics state (has translation transformation)
        document.Fill(path);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();
				/////////////////////////////////////////////////////////////////////////////////////////////////////////


        //Displace on 200 to the bottom.
        document.Translate(0, 200);

				////////////////////// Scaling //////////////////////////////////////////////////////////////////////////
        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Scale current graphics state on 0.5 in X axis and on 0.75f in Y axis. So we add scale component to the current transformation.
        document.Scale(0.5f, 0.75f);

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Red));

        //Fill the third rectangle in the current graphics state (has scale transformation)
        document.Fill(path);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();
				//////////////////////////////////////////////////////////////////////////////////////////////////////


        //Displace upper level graphics state on 250 to the right.
        document.Translate(250, 0);


				////////////////////// Rotation //////////////////////////////////////////////////////////////////////
        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Rotate current graphics state on 45 degrees around origin of current graphics state (350, 300). So we add rotation component to the current transformation.
        document.Rotate(45);

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Green));

        //Fill the fourth rectangle in the current graphics state (has rotation transformation)
        document.Fill(path);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();
				//////////////////////////////////////////////////////////////////////////////////////////////////////


        //Returns upper level graphics state back to the left and displace on 200 to the bottom.
        document.Translate(-250, 200);


				////////////////////// Shearing //////////////////////////////////////////////////////////////////////
        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Shear current graphics state. So we add shear component to the current transformation.
        document.Shear(0.1f, 0.2f);

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Pink));

        //Fill the fifth rectangle in the current graphics state (has shear transformation)
        document.Fill(path);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();
				//////////////////////////////////////////////////////////////////////////////////////////////////////


        //Displace upper level graphics state on 250 to the right.
        document.Translate(250, 0);


				////////////////////// Complex transformation ////////////////////////////////////////////////////////
        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Transform current graphics state with complex transformation. So we add translation, scale and rotation components to the current transformation.
        document.Transform(new System.Drawing.Drawing2D.Matrix(1.2f, -0.965925f, 0.258819f, 1.5f, 0f, 50));

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Aquamarine));

        //Fill the sixth rectangle in the current graphics state (has complex transformation)
        document.Fill(path);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();
				//////////////////////////////////////////////////////////////////////////////////////////////////////
				
        //Close current page
        document.ClosePage();

        //Save the document
        document.Save();
    }

Untuk menambahkan Clip ke status grafis file PS ikuti panduan berikutnya:

  1. Buat file PS menggunakan Kelas PsDocument .
  2. Buat jalur grafis persegi panjang.
  3. Simpan status grafis saat ini, buat status grafis baru dan atur sebagai yang terbaru dengan WriteGraphicsSave() Metode.
  4. Terjemahkan status grafis saat ini menggunakan Metode Translate() .
  5. Buat jalur grafik lingkaran.
  6. Tambahkan kliping menurut lingkaran ke status grafis saat ini menggunakan Metode Clip() .
  7. Atur cat dalam kondisi grafis saat ini dengan Metode SetPaint() .
  8. Isi jalur grafik persegi panjang melalui Metode Fill() .
  9. Kembalikan keadaan grafik sebelumnya dengan Metode WriteGraphicsRestore() .
  10. Terjemahkan status grafis saat ini menggunakan Metode Translate() .
  11. Buat objek System.Drawing.Pen.
  12. Tetapkan goresan pada kondisi grafis saat ini dengan Metode SetStroke() .
  13. Gambarkan jalur grafis persegi panjang di atas persegi panjang yang terpotong melalui Metode Draw() .
  14. Tutup halaman saat ini melalui Metode ClosePage() .
  15. Simpan dokumen PS yang dibuat menggunakan Metode PsDocument.Save() .

Status grafik file PS memotong kode C#

    // The path to the documents directory.
    string dataDir = RunExamples.GetDataDir_WorkingWithCanvas();

    //Create output stream for PostScript document
    using (Stream outPsStream = new FileStream(dataDir + "Clipping_outPS.ps", FileMode.Create))
    {
        //Create save options with default values
        PsSaveOptions options = new PsSaveOptions();

        // Create new 1-paged PS Document
        PsDocument document = new PsDocument(outPsStream, options, false);

        //Create graphics path from the rectangle
        System.Drawing.Drawing2D.GraphicsPath rectangePath = new System.Drawing.Drawing2D.GraphicsPath();
        rectangePath.AddRectangle(new System.Drawing.RectangleF(0, 0, 300, 200));

				////////////////////// Clipping by shape //////////////////////////////////////////////////////////////////////

        //Save graphics state in order to return back to this state after transformation
        document.WriteGraphicsSave();

        //Displace current graphics state on 100 points to the right and 100 points to the bottom.
        document.Translate(100, 100);

        //Create graphics path from the circle
        System.Drawing.Drawing2D.GraphicsPath circlePath = new System.Drawing.Drawing2D.GraphicsPath();
        circlePath.AddEllipse(new System.Drawing.RectangleF(50, 0, 200, 200));

        //Add clipping by circle to the current graphics state
        document.Clip(circlePath);

        //Set paint in the current graphics state
        document.SetPaint(new System.Drawing.SolidBrush(Color.Blue));

        //Fill the rectangle in the current graphics state (with clipping)
        document.Fill(rectangePath);

        //Restore graphics state to the previus (upper) level
        document.WriteGraphicsRestore();

        //Displace upper level graphics state on 100 points to the right and 100 points to the bottom.
        document.Translate(100, 100);

        Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
        pen.DashStyle = DashStyle.Dash;

        document.SetStroke(pen);

        //Draw the rectangle in the current graphics state (has no clipping) above clipped rectngle
        document.Draw(rectangePath);

				/////////////////////////////////////////////////////////////////////////////////////////////////////////

        //Close current page
        document.ClosePage();

        //Save the document
        document.Save();
    }



Pertanyaan Umum

1. Apa status grafis dalam dokumen PostScript (PS)?

Status grafik di PostScript adalah pengaturan dan atribut saat ini yang diterapkan pada elemen grafis dalam dokumen. Ini mencakup parameter seperti matriks transformasi saat ini, gaya garis, warna isian, jalur kliping, dan atribut grafis lainnya yang memengaruhi cara elemen dirender pada halaman.

2. Bagaimana cara mengelola status grafis dalam dokumen PS?

Hal ini dapat dilakukan dengan menggunakan perintah PostScript seperti gsave dan grestore untuk masing-masing menyimpan dan memulihkan status grafis. Selain itu, operator seperti setlinewidth, setrgbcolor, dan setdash dapat digunakan untuk mengubah atribut tertentu dari status grafis sesuai kebutuhan.

3. Mengapa penting untuk memahami dan mengelola status grafis dalam dokumen PostScript (PS)?

Dengan memanipulasi status grafis, Anda dapat memperoleh efek seperti transformasi, perubahan warna, dan area pemotongan, memastikan bahwa grafis Anda ditampilkan dengan benar dan sesuai dengan spesifikasi desain Anda. Ini juga membantu mengoptimalkan ukuran dan kinerja file, terutama ketika berhadapan dengan elemen grafis yang kompleks atau berulang.

PS Apa itu Format File PS

Format PS adalah salah satu format bahasa deskripsi halaman (PDL). Hal ini mampu berisi grafis serta informasi teks pada halaman. Itulah sebabnya format ini didukung oleh sebagian besar program untuk mengedit gambar. File postscript itu sendiri adalah semacam instruksi untuk printer. Ini berisi informasi tentang apa dan bagaimana mencetak dari halamannya.