Grafik durumlarıyla çalışma

PS dosyalarının grafik durumlarını kırpın ve dönüştürün

 

PS belgelerindeki grafik durumlarını yönetmek (XPS'teki tuvallerin eşdeğeri), Aspose.Page for .NET tarafından sunulan ana özelliklerden biridir. Aşağıdaki örnekte aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Geçerli grafik durumunu kaydedin, yeni bir grafik durumu oluşturun ve bunu geçerli olarak ayarlayın.

  • Geçerli grafik durumunu çevirin, ölçeklendirin, döndürün veya yamultun.

  • Geçerli grafik durumu için karmaşık bir dönüşüm ayarlayın.

  • Geçerli grafik durumu için boyayı ve konturu ayarlayın.

  • Bir grafik yolunu doldurun ve çizin.

  • Grafik durumunu kırpın.

  • Önceki grafik durumunu geri yükleyin.

Bir PS dosyasının grafik durumlarını dönüştürmek için sonraki kılavuzu izleyin:

  1. PsDocument Class kullanarak bir PS dosyası oluşturun.
  2. Dikdörtgen grafik yolu oluşturun.
  3. Geçerli grafik durumunu kaydedin, yeni bir grafik durumu oluşturun ve bunu WriteGraphicsSave() ile geçerli olarak ayarlayın Yöntem.
  4. Mevcut grafik durumunu Translate() Yöntemini kullanarak çevirin.
  5. Boyayı, SetPaint() Yöntemiyle geçerli grafik durumuna ayarlayın.
  6. Grafik yolunu Fill() yöntemini kullanarak doldurun.
  7. WriteGraphicsRestore Yöntemini kullanarak önceki grafik durumunu geri yükleyin.
  8. Scale() , kullanarak diğer dönüşümlerle daha fazla grafik durumu eklemek için 3-7 arasındaki adımları tekrarlayın. Rotate() , Shear() ve Transform() Yöntemler.
  9. Geçerli sayfayı ClosePage() yöntemini kullanarak kapatın.
  10. Oluşturulan PS belgesini PsDocument.Save() Yöntemini kullanarak kaydedin.

PS dosyası grafik durumu Dönüşüm C# kodu

    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();
    }

Bir PS dosyasının grafik durumuna Klip eklemek için sonraki kılavuzu izleyin:

  1. PsDocument Class kullanarak bir PS dosyası oluşturun.
  2. Dikdörtgen grafik yolu oluşturun.
  3. Geçerli grafik durumunu kaydedin, yeni bir grafik durumu oluşturun ve bunu WriteGraphicsSave() ile geçerli olarak ayarlayın Yöntem.
  4. Mevcut grafik durumunu Translate() Yöntemini kullanarak çevirin.
  5. Bir daire grafik yolu oluşturun.
  6. Clip() Yöntemini kullanarak mevcut grafik durumuna daire şeklinde kırpma ekleyin.
  7. Boyayı, SetPaint() Yöntemiyle geçerli grafik durumuna ayarlayın.
  8. Dikdörtgen grafik yolunu Fill() Yöntemi aracılığıyla doldurun.
  9. WriteGraphicsRestore() Yöntemi ile önceki grafik durumunu geri yükleyin.
  10. Mevcut grafik durumunu Translate() Yöntemini kullanarak çevirin.
  11. Bir System.Drawing.Pen nesnesi oluşturun.
  12. SetStroke() Yöntemini kullanarak mevcut grafik durumunda bir kontur ayarlayın.
  13. Draw() Yöntemini kullanarak kırpılmış dikdörtgenin üzerine dikdörtgen grafik yolunu çizin.
  14. Geçerli sayfayı ClosePage() Yöntemi aracılığıyla kapatın.
  15. Oluşturulan PS belgesini PsDocument.Save() Yöntemini kullanarak kaydedin.

PS dosyası grafik durumu kırpma C# kodu

    // 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();
    }



SSS

1. PostScript (PS) belgelerindeki grafik durumları nelerdir?

PostScript’teki grafik durumları, belgedeki grafik öğelere uygulanan geçerli ayarlar ve niteliklerdir. Geçerli dönüşüm matrisi, çizgi stili, dolgu rengi, kırpma yolu gibi parametreleri ve öğelerin sayfada nasıl oluşturulduğunu etkileyen diğer grafik niteliklerini içerirler.

2. PS belgelerinde grafik durumlarını nasıl yönetebilirim?

Bu, sırasıyla grafik durumunu kaydetmek ve geri yüklemek için ‘gsave’ ve ‘grestore’ gibi PostScript komutları kullanılarak yapılabilir. Ek olarak, ‘setlinewidth’, ‘setrgbcolor’ ve ‘setdash’ gibi operatörler, grafik durumunun belirli niteliklerini gerektiği gibi değiştirmek için kullanılabilir.

3. PostScript (PS) belgelerindeki grafik durumlarını anlamak ve yönetmek neden önemlidir?

Grafik durumlarını değiştirerek dönüşümler, renk değişiklikleri ve kırpma bölgeleri gibi efektler elde edebilir, grafiklerinizin doğru ve tasarım özelliklerine göre görüntülenmesini sağlayabilirsiniz. Ayrıca, özellikle karmaşık veya tekrarlayan grafik öğelerle uğraşırken dosya boyutunun ve performansının optimize edilmesine yardımcı olur.

PS PS Dosya Biçimi nedir

PS formatı, sayfa açıklama dili (PDL) formatlarından biridir. Sayfada metin bilgilerinin yanı sıra grafik içerebilir. Bu nedenle format, görüntü düzenleme programlarının çoğu tarafından desteklendi. Postscript dosyasının kendisi, yazıcılar için bir tür talimattır. Sayfasından neyin ve nasıl yazdırılacağı hakkında bilgi içerir.