Dolgozzon grafikus állapotokkal

Vágja le és alakítsa át a PS-fájlok grafikus állapotait

 

A PS-dokumentumok grafikus állapotainak kezelése (az XPS-ben a vásznaknak megfelelő) az Aspose.Page .NET-hez kínált fő szolgáltatásai közé tartozik. Az alábbi példából megtudhatja, hogyan:

  • Mentse el az aktuális grafikus állapotot, hozzon létre egy új grafikus állapotot, és állítsa be aktuálisnak.

  • Az aktuális grafikus állapot lefordítása, méretezése, forgatása vagy nyírása.

  • Állítson be egy komplex átalakítást az aktuális grafikus állapothoz.

  • A festék és a körvonal beállítása az aktuális grafikai állapothoz.

  • Töltse ki és rajzoljon egy grafikus útvonalat.

  • Vágja le a grafikus állapotot.

  • Állítsa vissza az előző grafikus állapotot.

A PS-fájlok grafikus állapotainak átalakításához kövesse a következő útmutatót:

  1. Hozzon létre egy PS-fájlt a használatával PsDocument Class .
  2. Hozzon létre egy téglalap grafikus útvonalat.
  3. Mentse el az aktuális grafikus állapotot, hozzon létre egy új grafikus állapotot, és állítsa be aktuálisnak a WriteGraphicsSave() segítségével Módszer.
  4. Fordítsa le az aktuális grafikus állapotot a Translate() módszerrel.
  5. Állítsa be a festéket az aktuális grafikus állapotba a SetPaint() módszerrel.
  6. Töltse ki a grafikus útvonalat a Fill() metódussal.
  7. Állítsa vissza a korábbi grafikus állapotot a WriteGraphicsRestore módszerrel.
  8. Ismételje meg a 3-7. lépést további grafikus állapotok hozzáadásához a segítségével Scale() , Forgatás() , Shear() és Transform() Mód.
  9. Zárja be az aktuális oldalt a ClosePage() metódussal.
  10. Mentse el a létrehozott PS-dokumentumot a PsDocument.Save() módszerrel.

PS fájl grafikus állapota Transzformáció C# kód

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

A klip hozzáadásához egy PS-fájl grafikus állapotához kövesse a következő útmutatót:

  1. Hozzon létre egy PS-fájlt a használatával PsDocument Class .
  2. Hozzon létre egy téglalap grafikus útvonalat.
  3. Mentse el az aktuális grafikus állapotot, hozzon létre egy új grafikus állapotot, és állítsa be aktuálisnak a WriteGraphicsSave() segítségével Módszer.
  4. Fordítsa le az aktuális grafikus állapotot a Translate() módszerrel.
  5. Hozzon létre egy körgrafikus útvonalat.
  6. A Clip() módszerrel adja hozzá a kör szerinti kivágást az aktuális grafikus állapothoz.
  7. Állítsa be a festéket az aktuális grafikus állapotba a SetPaint() módszerrel.
  8. Töltse ki a téglalap alakú grafikus útvonalat a Fill() módszerrel.
  9. Állítsa vissza a korábbi grafikus állapotot a WriteGraphicsRestore() módszerrel.
  10. Fordítsa le az aktuális grafikus állapotot a Translate() módszerrel.
  11. Hozzon létre egy System.Drawing.Pen objektumot.
  12. Állítson be körvonalat az aktuális grafikai állapotban a SetStroke() módszerrel.
  13. Rajzolja meg a téglalap grafikus útvonalát a vágott téglalap fölé a Draw() módszerrel.
  14. Zárja be az aktuális oldalt a ClosePage() módszerrel.
  15. Mentse el a létrehozott PS-dokumentumot a PsDocument.Save() módszerrel.

A PS fájl grafikus állapota C# kód kivágása

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



GYIK

1. Mik a grafikai állapotok a PostScript (PS) dokumentumokban?

A PostScript grafikus állapotai a dokumentum grafikus elemeire alkalmazott aktuális beállítások és attribútumok. Ide tartoznak az olyan paraméterek, mint az aktuális átalakítási mátrix, vonalstílus, kitöltésszín, vágógörbe és egyéb grafikus attribútumok, amelyek befolyásolják az elemek megjelenítését az oldalon.

2. Hogyan kezelhetem a grafikai állapotokat a PS dokumentumokban?

Ez megtehető PostScript-parancsokkal, mint például a gsave és grestore a grafikus állapot mentéséhez, illetve visszaállításához. Ezenkívül az olyan operátorok, mint a “setlinewidth”, a “setrgbcolor” és a “setdash” használhatók a grafikus állapot adott attribútumainak igény szerinti módosítására.

3. Miért fontos a grafikus állapotok megértése és kezelése a PostScript (PS) dokumentumokban?

A grafikai állapotok manipulálásával olyan hatásokat érhet el, mint például átalakítások, színváltozások és régiók kivágása, így biztosítva, hogy a grafika helyesen és a tervezési specifikációknak megfelelően jelenjen meg. Ezenkívül segít optimalizálni a fájlméretet és a teljesítményt, különösen összetett vagy ismétlődő grafikus elemek kezelésekor.

PS Mi a PS fájlformátum

A PS formátum az oldalleíró nyelv (PDL) egyik formátuma. Képes grafikus és szöveges információkat is tartalmazni az oldalon. Ezért a formátumot a legtöbb képszerkesztő program támogatta. Maga a postscript fájl egyfajta utasítás a nyomtatóknak. Információkat tartalmaz arról, hogy mit és hogyan kell nyomtatni az oldaláról.