Rysowanie obrazów
Rysowanie linii
Ten przykład wykorzystuje klasę Graphics do rysowania kształtów linii na powierzchni obrazu. Aby zademonstrować operację, przykład tworzy nowy obraz i rysuje linie na powierzchni obrazu, używając metody DrawLine udostępnionej przez klasę Graphics. Najpierw utworzymy obraz PsdImage, określając jego wysokość i szerokość.
Gdy obraz zostanie utworzony, użyjemy metody Clear udostępnionej przez klasę Graphics, aby ustawić jego kolor tła. Metoda DrawLine klasy Graphics służy do rysowania linii na obrazie łączących dwie struktury punktów. Metoda ta ma kilka przeciążeń, akceptujących instancję klasy Pen oraz pary współrzędnych punktów lub struktury Point/PointF jako argumenty. Klasa Pen definiuje obiekt używany do rysowania linii, krzywych i figur. Klasa Pen ma kilka przeciążeń konstruktorów, aby rysować linie ze określonym kolorem, szerokością i pędzlem. Klasa SolidBrush jest używana do ciągłego rysowania w określonym kolorze. Na koniec obraz jest eksportowany do formatu pliku BMP. Poniższy fragment kodu pokazuje, jak rysować kształty linii na powierzchni obrazu.
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); | |
} |
Rysowanie elipsy
Przykład rysowania elipsy to drugi artykuł z serii rysowania kształtów. Wykorzystamy klasę Graphics do rysowania kształtu elipsy na powierzchni obrazu. Aby zademonstrować operację, przykład tworzy nowy obraz i rysuje kształt elipsy na powierzchni obrazu, używając metody DrawEllipse udostępnionej przez klasę Graphics. Najpierw utworzymy obraz PsdImage, określając jego wysokość i szerokość.
Po utworzeniu obrazu, utworzymy i zainicjujemy obiekt klasy Graphics oraz ustawimy kolor tła obrazu za pomocą metody Clear klasy Graphics. Metoda DrawEllipse klasy Graphics służy do rysowania kształtu elipsy na powierzchni obrazu określonej przez strukturę prostokąta ograniczającego. Metoda ta ma kilka przeciążeń, akceptujących instancje klas Pen i Rectangle/RectangleF albo parę współrzędnych, wysokościę i szerokość jako argumenty. Klasa Pen definiuje obiekt używany do rysowania linii, krzywych i figur. Klasa Pen ma kilka przeciążeń konstruktorów, aby rysować linie ze określonym kolorem, szerokością i pędzlem. Klasa Rectangle przechowuje zestaw czterech liczb całkowitych reprezentujących położenie i rozmiar prostokąta. Klasa Rectangle ma kilka przeciążeń konstruktorów, aby narysować strukturę prostokąta ze określonym rozmiarem i położeniem. Klasa SolidBrush jest używana do ciągłego rysowania w określonym kolorze. Na koniec obraz jest eksportowany do formatu pliku BMP. Poniższy fragment kodu pokazuje, jak rysować kształt elipsy na powierzchni obrazu.
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); | |
} |
Rysowanie prostokąta
W tym przykładzie narysujemy kształt prostokąta na powierzchni obrazu. Aby zademonstrować operację, przykład tworzy nowy obraz i rysuje kształt prostokąta na powierzchni obrazu, używając metody DrawRectangle udostępnionej przez klasę Graphics. Najpierw utworzymy obraz PsdImage, określając jego wysokość i szerokość. Następnie ustalimy kolor tła obrazu za pomocą metody Clear klasy Graphics.
Metoda DrawRectangle klasy Graphics służy do rysowania kształtu prostokąta na powierzchni obrazu określonej przez strukturę prostokąta. Metoda ta ma kilka przeciążeń, akceptujących instancje klas Pen i Rectangle/RectangleF albo parę współrzędnych, szerokość i wysokość jako argumenty. Klasa Rectangle przechowuje zestaw czterech liczb całkowitych reprezentujących położenie i rozmiar prostokąta. Klasa Rectangle ma kilka przeciążeń konstruktorów, aby narysować strukturę prostokąta ze określonym rozmiarem i położeniem. Na koniec obraz jest eksportowany do formatu pliku BMP. Poniższy fragment kodu pokazuje, jak rysować kształt prostokąta na powierzchni obrazu.
// 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); | |
} |
Rysowanie łuku
W tej części serii rysowania kształtów narysujemy kształt łuku na powierzchni obrazu. Użyjemy metody DrawArc klasy Graphics, aby zademonstrować operację na obrazie BMP. Najpierw utworzymy obraz PsdImage, określając jego wysokość i szerokość. Gdy obraz zostanie utworzony, użyjemy metody Clear udostępnionej przez klasę Graphics, aby ustawić jego kolor tła.
Metoda DrawArc klasy Graphics służy do rysowania kształtu łuku na powierzchni obrazu. Metoda DrawArc reprezentuje część elipsy określoną przez strukturę prostokąta lub parę współrzędnych. Ta metoda ma kilka przeciążeń, akceptujących instancje klas Pen oraz Rectangle/RectangleF albo parę współrzędnych, szerokość i wysokość jako argumenty. Na koniec obraz jest eksportowany do formatu pliku BMP. Poniższy fragment kodu pokazuje, jak rysować kształt łuku na powierzchni obrazu.
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); | |
} |
Rysowanie krzywej Beziera
Ten przykład wykorzystuje klasę Graphics do rysowania kształtów krzywych Beziera na powierzchni obrazu. Aby zademonstrować operację, przykład tworzy nowy obraz i rysuje kształt krzywej Beziera na powierzchni obrazu, używając metody DrawBezier udostępnionej przez klasę Graphics. Najpierw utworzymy obraz PsdImage, określając jego wysokość i szerokość. Gdy obraz zostanie utworzony, użyjemy metody Clear udostępnionej przez klasę Graphics, aby ustawić jego kolor tła.
Metoda DrawBezier klasy Graphics służy do rysowania kształtu krzywej Beziera na powierzchni obrazu zdefiniowanej przez cztery struktury Point. Ta metoda ma kilka przeciążeń, akceptujących instancje klasy Pen oraz cztery uporządkowane pary współrzędnych lub cztery struktury Point/PointF albo tablicę struktur Point/PointF. Klasa Pen definiuje obiekt używany do rysowania linii, krzywych i figur. Klasa Pen ma kilka przeciążeń konstruktorów, aby rysować linie ze określonym kolorem, szerokością i pędzlem. Na koniec obraz jest eksportowany do formatu pliku BMP. Poniższy fragment kodu pokazuje, jak rysować krzywą Beziera na powierzchni obrazu.
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); | |
} |
Rysowanie obrazów za pomocą podstawowej funkcjonalności
Aspose.PSD to biblioteka, która oferuje wiele wartościowych funkcji, w tym tworzenie obrazów od podstaw. Rysuj za pomocą podstawowej funkcjonalności, takiej jak manipulacja informacjami o mapie bitowej obrazu, lub korzystaj z zaawansowanych funkcji, takich jak Graphics i GraphicsPath, do rysowania kształtów na powierzchni obrazu za pomocą różnych pędzli i kredek. Korzystając z klasy RasterImage Aspose.PSD, możesz pobrać informacje o pikselach obszaru obrazu i nimi manipulować. Klasa RasterImage zawiera całą podstawową funkcjonalność rysowania, taką jak pobieranie i ustawianie pikseli oraz inne metody manipulacji obrazem. Utwórz nowy obraz, korzystając z dowolnej z metod opisanych w Tworzenie plików i przypisz go do instancji klasy RasterImage. Użyj metody LoadPixels klasy RasterImage, aby pobrać informacje o pikselach części obrazu. Gdy masz tablicę pikseli, możesz nią manipulować, zmieniając na przykład kolor każdego piksela. Po manipulacji informacjami o pikselach, ustaw je z powrotem w żądanym obszarze obrazu za pomocą metody SavePixels klasy RasterImage. Poniższy fragment kodu pokazuje, jak rysować obrazy za pomocą podstawowej funkcjonalności.
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()); | |
} |