Vẽ Hình Ảnh bằng Đồ Họa
Vẽ Hình Ảnh bằng Đồ Họa
Với thư viện Aspose.PSD, bạn có thể vẽ các hình dạng đơn giản như đường thẳng, hình chữ nhật và hình tròn, cũng như các hình dạng phức tạp như da giác, đường cong, cung và hình dạng Bézier. Thư viện Aspose.PSD tạo ra các hình dạng bằng Các object Graphics mà thuộc về không gian tên Aspose.PSD. Các đối tượng Graphics chịu trách nhiệm thực hiện các hoạt động vẽ khác nhau trên một hình ảnh, từ đó thay đổi bề mặt của hình ảnh. Lớp Graphics sử dụng một loạt các đối tượng trợ giúp để tăng cường các hình dạng:
· Bút, để vẽ đường, đường viền hình dạng hoặc tạo các biểu diễn hình học khác.
· Cọ, để xác định cách điền vào khu vực.
· Phông chữ, để xác định hình dạng của các ký tự văn bản.
Vẽ với Lớp Graphics
Dưới đây là một ví dụ mã nguồn minh họa việc sử dụng lớp Graphics. Mã nguồn ví dụ đã được chia thành nhiều phần để giữ nó đơn giản và dễ theo dõi. Từng bước, các ví dụ cho thấy cách:
- Tạo một hình ảnh.
- Tạo và khởi tạo đối tượng Graphics.
- Xóa bề mặt.
- Vẽ một hình bầu dục.
- Vẽ một đa giác đã được điền và lưu hình ảnh.
Mẫu Lập Trình
Tạo Một Hình Ảnh
Bắt đầu bằng cách tạo một hình ảnh bằng cách sử dụng bất kỳ phương pháp nào được mô tả trong Tạo Tập Tin.
// 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()); | |
} |
Tạo và Khởi Tạo Đối Tượng Graphics
Tiếp theo, tạo và khởi tạo một đối tượng Graphics bằng cách chuyển đối tượng Hình ảnh cho nó vào hàm tạo.
// 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); | |
} |
Xóa Bề Mặt
Xóa bề mặt của Graphics bằng cách gọi phương thức Xóa của lớp Graphics và chuyển màu làm tham số. Phương thức này điền vào bề mặt của Graphics với màu được chuyển vào như một đối số.
// 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()); | |
} |
Vẽ Một Hình Bầu Dục
Bạn có thể thấy rằng lớp Graphics đã hiển thị nhiều phương thức để vẽ và điền các hình dạng. Bạn sẽ tìm thấy danh sách đầy đủ các phương thức trong Tài liệu tham chiếu API của Aspose.PSD cho .NET. Có một số phiên bản nạp chồng của phương thức Vẽ hình bầu dục được hiển thị bởi lớp Graphics. Tất cả các phương pháp này chấp nhận một đối tượng Bút như đối số đầu tiên. Các tham số sau được chuyển để xác định hình chữ nhật giới hạn xung quanh hình bầu dục. Ví dụ này, sử dụng phiên bản chấp nhận đối tượng Hình chữ nhật làm tham số thứ hai để vẽ một hình bầu dục bằng đối tượng Bút trong màu bạn muốn.
// 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()); | |
} |
Vẽ Một Đa Giác Đã Được Điền
Tiếp theo, vẽ một đa giác sử dụng Brush Tuyến tính và một mảng điểm. Lớp Graphics đã hiển thị nhiều phiên bản nạp chồng của phương thức FillPolygon(). Tất cả các phiên bản này chấp nhận một đối tượng Cọ như đối số đầu tiên, xác định các đặc tính của điền. Tham số thứ hai là một mảng điểm. Xuất hiện lưu ý, mỗi hai điểm liền kề trong mảng chỉ định một cạnh của đa giác.
// 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()); | |
} |
Vẽ Hình Ảnh bằng Đồ Họa : Toàn Bộ Nguồn
// 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()); | |
} |
Tất cả các lớp mà thực hiện IDisposable và truy cập tài nguyên không quản lý được khởi tạo trong một câu lệnh Sử dụng để đảm bảo rằng chúng được xử lý đúng cách khi bị loại bỏ.