Kreslení obrázků

Kreslení čar

Tento příklad používá třídu Graphics kreslit tvar čar na povrchu obrázku. Pro demonstrování operace vytváří příklad nový obrázek a kreslí čáry na povrch obrázku pomocí metody DrawLine, kterou poskytuje třída Graphics. Nejprve vytvoříme objekt PsdImage a specifikujeme jeho výšku a šířku.

Jakmile je obrázek vytvořen, použijeme metodu Clear, kterou poskytuje třída Graphics, k nastavení barvy pozadí. Metoda DrawLine třídy Graphics je použita k nakreslení čáry na obrázku spojující dvě struktury bodů. Tato metoda má několik přetížení, která přijímají instanci třídy Pen a dvojice souřadnic nebo struktury Point/PointF jako argumenty. Třída Pen definuje objekt používaný kreslení linií, křivek a tvarů. Třída Pen má několik přetížených konstruktorů pro kreslení linií s určenou barvou, šířkou a štětcem. Třída SolidBrush se používá k nepřetržitému kreslení s konkrétní barvou. Nakonec se obrázek exportuje do formátu souboru BMP. Následující kódový úryvek ukazuje, jak nakreslit tvary čar na povrch obrázku.

String dataDir = Utils.getDataDir(DrawingLines.class) + "DrawingImages/";
// Create an instance of BmpOptions and set its various properties
String outpath = dataDir + "Lines.bmp";
BmpOptions saveOptions = new BmpOptions();
saveOptions.setBitsPerPixel(32);
// Create an instance of Image
try (Image image = new PsdImage(100, 100)) {
// Create and initialize an instance of Graphics class and Clear Graphics surface
Graphics graphic = new Graphics(image);
graphic.clear(Color.getYellow());
// Draw two dotted diagonal lines by specifying the Pen object having blue color and co-ordinate Points
graphic.drawLine(new Pen(Color.getBlue()), 9, 9, 90, 90);
graphic.drawLine(new Pen(Color.getBlue()), 9, 90, 90, 9);
// Draw a four continuous line by specifying the Pen object having Solid Brush with red color and two point structures
graphic.drawLine(new Pen(new SolidBrush(Color.getRed())), new Point(9, 9), new Point(9, 90));
graphic.drawLine(new Pen(new SolidBrush(Color.getAqua())), new Point(9, 90), new Point(90, 90));
graphic.drawLine(new Pen(new SolidBrush(Color.getBlack())), new Point(90, 90), new Point(90, 9));
graphic.drawLine(new Pen(new SolidBrush(Color.getWhite())), new Point(90, 9), new Point(9, 9));
image.save(outpath, saveOptions);
}

Kreslení elipsy

Příklad kreslení elipsy je druhým článkem v sérii kreslení tvarů. Budeme používat třídu Graphics k nakreslení tvaru elipsy na povrchu obrázku. Pro demonstrování operace vytváří příklad nový obrázek a kreslí tvar elipsy na povrch obrázku pomocí metody DrawEllipse, kterou poskytuje třída Graphics. Nejprve vytvoříme objekt PsdImage a specifikujeme jeho výšku a šířku.

Po vytvoření obrázku vytvoříme a inicializujeme objekt třídy Graphics a nastavíme pozadí obrázku pomocí metody Clear třídy Graphics. Metoda DrawEllipse třídy Graphics je použita k nakreslení tvaru elipsy na povrch obrázku specifikovaným strukturou ohraničujícího obdélníku. Tato metoda má několik přetížení, která přijímají instance tříd Pen a Rectangle/RectangleF nebo dvojici souřadnic, výšku a šířku jako argumenty. Třída Pen definuje objekt používaný kreslení linií, křivek a tvarů. Třída Pen má několik přetížených konstruktorů pro kreslení linií s určenou barvou, šířkou a štětcem. Třída Rectangle uchovává soubor čtyř celých čísel, která reprezentují umístění a velikost obdélníku. Třída Rectangle má několik přetížených konstruktorů pro kreslení struktury obdélníku s určenou velikostí a umístěním. Třída SolidBrush se používá k nepřetržitému kreslení s konkrétní barvou. Nakonec se obrázek exportuje do formátu souboru BMP. Následující kódový úryvek ukazuje, jak nakreslit tvar elipsy na povrch obrázku.

String dataDir = Utils.getDataDir(DrawingEllipse.class) + "DrawingImages/";
// Create an instance of BmpOptions and set its various properties
String outpath = dataDir + "Ellipse.bmp";
// Create an instance of BmpOptions and set its various properties
BmpOptions saveOptions = new BmpOptions();
saveOptions.setBitsPerPixel(32);
// Create an instance of Image
try (Image image = new PsdImage(100, 100)) {
// Create and initialize an instance of Graphics class and Clear Graphics surface
Graphics graphic = new Graphics(image);
graphic.clear(Color.getYellow());
// Draw a dotted ellipse shape by specifying the Pen object having red color and a surrounding Rectangle
graphic.drawEllipse(new Pen(Color.getRed()), new Rectangle(30, 10, 40, 80));
// Draw a continuous ellipse shape by specifying the Pen object having solid brush with blue color and a surrounding Rectangle
graphic.drawEllipse(new Pen(new SolidBrush(Color.getBlue())), new Rectangle(10, 30, 80, 40));
// export image to bmp file format.
image.save(outpath, saveOptions);
}

Kreslení obdélníku

V tomto příkladu nakreslíme tvar obdélníku na povrchu obrázku. Pro demonstrování operace vytváří příklad nový obrázek a nakreslí tvar obdélníku na povrch obrázku pomocí metody DrawRectangle, kterou poskytuje třída Graphics. Nejprve vytvoříme objekt PsdImage a specifikujeme jeho výšku a šířku. Poté nastavíme barvu pozadí obrázku pomocí metody Clear třídy Graphics.

Metoda DrawRectangle třídy Graphics je použita k nakreslení tvaru obdélníku na povrchu obrázku specifikovaným strukturou obdélníku. Tato metoda má několik přetížení, která přijímají instance tříd Pen a Rectangle/RectangleF nebo dvojice souřadnic, šířku a výšku jako argumenty. Třída Rectangle uchovává soubor čtyř celých čísel, která reprezentují umístění a velikost obdélníku. Třída Rectangle má několik přetížených konstruktorů pro kreslení struktury obdélníku s určenou velikostí a umístěním. Nakonec se obrázek exportuje do formátu souboru BMP. Následující kódový úryvek ukazuje, jak nakreslit tvar obdélníku na povrch obrázku.

// Create an instance of BmpOptions and set its various properties
String outpath = dataDir + "Rectangle.bmp";
// Create an instance of BmpOptions and set its various properties
BmpOptions saveOptions = new BmpOptions();
saveOptions.setBitsPerPixel(32);
// Create an instance of Image
try (Image image = new PsdImage(100, 100)) {
// Create and initialize an instance of Graphics class, Clear Graphics surface, Draw a rectangle shapes and save all changes.
Graphics graphic = new Graphics(image);
graphic.clear(Color.getYellow());
graphic.drawRectangle(new Pen(Color.getRed()), new Rectangle(30, 10, 40, 80));
graphic.drawRectangle(new Pen(new SolidBrush(Color.getBlue())), new Rectangle(10, 30, 80, 40));
// export image to bmp file format.
image.save(outpath, saveOptions);
}

Kreslení oblouku

Při této části série kreslení tvarů nakreslíme tvar oblouku na povrchu obrázku. Budeme používat metodu DrawArc třídy Graphics k demonstrování operace na obrázku BMP. Nejprve vytvoříme objekt PsdImage a specifikujeme jeho výšku a šířku. Jakmile je obrázek vytvořen, použijeme metodu Clear, kterou poskytuje třída Graphics, k nastavení barvy pozadí.

Metoda DrawArc třídy Graphics je použita k nakreslení tvaru oblouku na obrázkovém povrchu. DrawArc reprezentuje část elipsy specifikovanou strukturou obdélníku nebo dvojicí souřadnic. Tato metoda má několik přetížení, která přijímají instance tříd Pen a Rectangle/RectangleF nebo dvojice souřadnic, šířku a výšku jako argumenty. Nakonec se obrázek exportuje do formátu souboru BMP. Následující kódový úryvek ukazuje, jak nakreslit tvar oblouku na povrch obrázku.

String dataDir = Utils.getDataDir(DrawingArc.class) + "DrawingImages/";
// Create an instance of BmpOptions and set its various properties
String outpath = dataDir + "Arc.bmp";
// Create an instance of BmpOptions and set its various properties
BmpOptions saveOptions = new BmpOptions();
saveOptions.setBitsPerPixel(32);
// Create an instance of Image
try (Image image = new PsdImage(100, 100)) {
// Create and initialize an instance of Graphics class and clear Graphics surface
Graphics graphic = new Graphics(image);
graphic.clear(Color.getYellow());
// Draw an arc shape by specifying the Pen object having red black color and coordinates, height, width, start & end angles
int width = 100;
int height = 200;
int startAngle = 45;
int sweepAngle = 270;
// Draw arc to screen and save all changes.
graphic.drawArc(new Pen(Color.getBlack()), 0, 0, width, height, startAngle, sweepAngle);
// export image to bmp file format.
image.save(outpath, saveOptions);
}

Kreslení Bézierovy křivky

Tento příklad používá třídu Graphics kreslit tvar Bézierovy křivky na povrchu obrázku. Pro demonstrování operace vytváří příklad nový obrázek a nakreslí tvar Bézierovy křivky na povrch obrázku pomocí metody DrawBezier, kterou poskytuje třída Graphics. Nejprve vytvoříme objekt PsdImage a specifikujeme jeho výšku a šířku. Jakmile je obrázek vytvořen, použijeme metodu Clear, kterou poskytuje třída Graphics, k nastavení barvy pozadí.

Metoda DrawBezier třídy Graphics je použita k nakreslení tvaru Bézierovy křivky na obrázku definovaný čtyřmi strukturami Point. Tato metoda má několik přetížení, která přijímají instance třídy Pen a čtyři uspořádané páry souřadnic nebo čtyři struktury Point/PointF nebo pole struktur Point/PointF jako argumenty. Třída Pen definuje objekt používaný kreslení linií, křivek a tvarů. Třída Pen má několik přetížených konstruktorů pro kreslení linií s určenou barvou, šířkou a štětcem. Nakonec se obrázek exportuje do formátu souboru BMP. Následující kódový úryvek ukazuje, jak nakreslit tvar Bézierovy křivky na povrch obrázku.

String dataDir = Utils.getDataDir(DrawingBezier.class) + "DrawingImages/";
// Create an instance of BmpOptions and set its various properties
String outpath = dataDir + "Bezier.bmp";
// Create an instance of BmpOptions and set its various properties
BmpOptions saveOptions = new BmpOptions();
saveOptions.setBitsPerPixel(32);
// Create an instance of Image
try (Image image = new PsdImage(100, 100)) {
// Create and initialize an instance of Graphics class and clear Graphics surface
Graphics graphic = new Graphics(image);
graphic.clear(Color.getYellow());
// Initializes the instance of PEN class with black color and width
Pen BlackPen = new Pen(Color.getBlack(), 3);
float startX = 10;
float startY = 25;
float controlX1 = 20;
float controlY1 = 5;
float controlX2 = 55;
float controlY2 = 10;
float endX = 90;
float endY = 25;
// Draw a Bezier shape by specifying the Pen object having black color and co-ordinate Points and save all changes.
graphic.drawBezier(BlackPen, startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);
// export image to bmp file format.
image.save(outpath, saveOptions);
}

Kreslení obrázků pomocí hlavní funkcionality

Aspose.PSD je knihovna, která nabízí mnoho cenných funkcí, včetně vytváření obrázků od základů. Kreslete pomocí hlavní funkcionality, jako je manipulace s bitmapovými informacemi obrázku, nebo používejte pokročilé funkce jako Graphics a GraphicsPath kreslit tvary na povrchu obrázku s pomocí různých štětců a per. Pomocí třídy RasterImage z Aspose.PSD můžete získat informace o pixelech oblasti obrázku a manipulovat s nimi. Třída RasterImage obsahuje celou hlavní kreslící funkčnost, jako získávání a nastavování pixelů a další metody pro manipulaci s obrázkem. Vytvořte nový obrázek pomocí kterékoli z metod popsaných vytváření souborů a přiřaďte jej k instanci třídy RasterImage. Použijte metodu LoadPixels třídy RasterImage k získání informací o pixelu části obrazu. Jakmile máte pole pixelů, můžete s ním manipulovat, například změnit barvu každého pixelu. Po manipulaci s informacemi o pixelech je vrátíte na požadovanou oblast obrázku pomocí metody SavePixels třídy RasterImage. Následující kódový úryvek ukazuje, jak kreslit obrázky pomocí hlavní funkcionality.

String dataDir = Utils.getDataDir(CoreDrawingFeatures.class) + "DrawingImages/";
// Create an instance of BmpOptions and set its various properties
String loadpath = dataDir + "sample.psd";
String outpath = dataDir + "CoreDrawingFeatures.bmp";
// Create an instance of Image
try (PsdImage image = new PsdImage(loadpath)) {
// load pixels
int[] pixels = image.loadArgb32Pixels(new Rectangle(0, 0, 100, 10));
for (int i = 0; i < pixels.length; i++) {
// specify pixel color value (gradient in this case).
pixels[i] = i;
}
// save modified pixels.
image.saveArgb32Pixels(new Rectangle(0, 0, 100, 10), pixels);
// export image to bmp file format.
image.save(outpath, new BmpOptions());
}