Rysowanie obrazów przy użyciu Graphics
Rysowanie obrazów przy użyciu Graphics
Dzięki bibliotece Aspose.PSD możesz rysować proste kształty, takie jak linie, prostokąty i koła, a także bardziej skomplikowane kształty, takie jak wielokąty, krzywe, łuki i kształty Beziera. Biblioteka Aspose.PSD tworzy takie kształty za pomocą klasy Graphics, która znajduje się w przestrzeni nazw Aspose.PSD. Obiekty Graphics są odpowiedzialne za wykonywanie różnych operacji rysowania na obrazie, zmieniając tym samym powierzchnię obrazu. Klasa Graphics korzysta z różnych obiektów pomocniczych, aby ulepszyć kształty:
· Długopisy, do rysowania linii, konturów kształtów lub renderowania innych reprezentacji geometrycznych.
· Pędzle, do definiowania, jakie obszary są wypełnione.
· Czcionki, do definiowania kształtu znaków tekstu.
Rysowanie za pomocą klasy Graphics
Poniżej znajduje się przykładowy kod demonstrowujący użycie klasy Graphics. Kod źródłowy przykładu został podzielony na kilka części, aby był prosty i łatwy do śledzenia. Krok po kroku przykłady pokazują, jak:
- Utwórz obraz.
- Utwórz i zainicjalizuj obiekt Graphics.
- Wyczyść powierzchnię.
- Narysuj elipsę.
- Narysuj wypełniony wielokąt i zapisz obraz.
Przykłady programowania
Tworzenie obrazu
Zacznij od utworzenia obrazu za pomocą dowolnej z metod opisanych w sekcji Utwórz pliki.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string loadpath = dataDir + "sample.psd"; | |
string outpath = dataDir + "CoreDrawingFeatures.bmp"; | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(loadpath)) | |
{ | |
// load pixels | |
var 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()); | |
} |
Utwórz i zainicjalizuj obiekt Graphics
Następnie utwórz i zainicjalizuj obiekt Graphics, przekazując obiekt Image do jego konstruktora.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string outpath = dataDir + "Arc.bmp"; | |
// Create an instance of BmpOptions and set its various properties | |
BmpOptions saveOptions = new BmpOptions(); | |
saveOptions.BitsPerPixel = 32; | |
// Create an instance of Image | |
using (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.Yellow); | |
// 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.Black), 0, 0, width, height, startAngle, sweepAngle); | |
// export image to bmp file format. | |
image.Save(outpath, saveOptions); | |
} |
Wyczyść powierzchnię
Wyczyść powierzchnię Graphics, wywołując metodę Clear klasy Graphics i przekazując kolor jako parametr. Ta metoda wypełnia powierzchnię Graphics przekazanym kolorem jako argumentem.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Narysuj elipsę
Zauważysz, że klasa Graphics posiada wiele metod do rysowania i wypełniania kształtów. Znajdziesz pełną listę metod w Dokumentacji interfejsu API Aspose.PSD dla .NET. Klasa Graphics udostępnia kilka wersji przeciążonych metod metody DrawEllipse. Wszystkie te metody przyjmują obiekt Pen jako swój pierwszy argument. Pozostałe parametry służą do zdefiniowania prostokąta otaczającego elipsę. W celu tego przykładu użyj wersji przyjmującej obiekt Rectangle jako drugi parametr, aby narysować elipsę za pomocą obiektu Pen w wybranym kolorze.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string loadpath = dataDir + "sample.psd"; | |
string outpath = dataDir + "CoreDrawingFeatures.bmp"; | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(loadpath)) | |
{ | |
// load pixels | |
var 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()); | |
} |
Narysuj wypełniony wielokąt
Następnie narysuj wielokąt, korzystając z LinearGradientBrush i tablicy punktów. Klasa Graphics udostępnia wiele przeciążonych wersji metody FillPolygon(). Wszystkie one przyjmują obiekt Brush jako swój pierwszy argument, definiujący charakterystyki wypełnienia. Drugim parametrem jest tablica punktów. Zauważ, że każde dwa kolejne punkty w tablicy określają bok wielokąta.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Rysowanie obrazów przy użyciu klasy Graphics: Pełne źródło
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Create an instance of Image | |
using (PsdImage image = new PsdImage(500, 500)) | |
{ | |
var graphics = new Graphics(image); | |
// Clear the image surface with white color and Create and initialize a Pen object with blue color | |
graphics.Clear(Color.White); | |
var pen = new Pen(Color.Blue); | |
// Draw Ellipse by defining the bounding rectangle of width 150 and height 100 also Draw a polygon using the LinearGradientBrush | |
graphics.DrawEllipse(pen, new Rectangle(10, 10, 150, 100)); | |
using (var linearGradientBrush = new LinearGradientBrush(image.Bounds, Color.Red, Color.White, 45f)) | |
{ | |
graphics.FillPolygon(linearGradientBrush, new[] { new Point(200, 200), new Point(400, 200), new Point(250, 350) }); | |
} | |
// export modified image. | |
image.Save(dataDir + "DrawingUsingGraphics_output.bmp", new BmpOptions()); | |
} |
Wszystkie klasy, które implementują IDisposable i uzyskują dostęp do zasobów zarządzanych, są tworzone w instrukcji Using, aby zapewnić poprawne zwolnienie zasobów.