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