Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Cách lưu hình đã vẽ trên picturebox và cách move các point trên picturebox

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    7

    Mặc định Cách lưu hình đã vẽ trên picturebox và cách move các point trên picturebox

    Hiện tại em sử dụng phương thức Paint của picturebox để vẽ các đối tượng đồ họa và sử dụng một biến Graphics g = e.Graphics;
    Nay em muốn hỏi 2 vấn đề sau :
    1. Em nghiên cứu code trên forum thì thấy đoạn code lưu ảnh các anh hay sử dụng như sau :
    Code:
    Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
                        pictureBox1.DrawToBitmap(bitmap, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
                        pictureBox1.Image = bitmap;
                        pictureBox1.Image.Save(fileName, format);
    Nhưng chỉ lưu ra được nền của picturebox.Theo em hiểu thì đoạn code trên ta tạo một bitmap kích thước = picturebox rồi vẽ lên bitmap đó.Sau đó ta gán image của picturebox = bitmap rồi save.Nhưng hình như phương thức paint của picturebox không hề vẽ và lưu trên picturebox (khi cho 1 form khác đè vào picturebox hay ẩn form thì tất cả hình sẽ biến mất, chỉ khi click lại thì hình mới hiện ra).Em muốn hỏi cách lưu các graphics đã vẽ này vào bitmap kiểu gì, hay có phương thức gì ngoài paint để vẽ lên picturebox không (em thấy có phương thức onpaint nữa nhưng không hiểu về nó lắm).

    2.Khi đã vẽ một hình (ví dụ một đường thẳng) có 2 point bắt đầu và kết thúc.Em muốn move một point bất kỳ nhưng không có cách nào làm được.Ý tưởng em như sau : tại mousedown() của picturebox khởi tạo point P1(e.X,e.Y) kiểm tra P1 có trùng với Point bắt đầu và kết thúc của line không?(tại đây em xét phạm vi P1 nằm trong khoảng 1 đường tròn bk = một số nào đấy với tâm là point bắt đầu hoặc kết thúc).Nếu thuộc gán 1 biến bool true và point = point được move.
    Sau đó tại mousemove kiểm tra bool = true thì gán point được move = point(e.x,e.y), tại phương thức paint thì vẽ lại hình với point được move và point ko được move.
    Ý tưởng em có đúng không và nếu không đúng các anh có thể chỉ em phương án giải quyết.Or các anh có phương án giải quyết nào khác thì giúp em với.
    Thanks mọi người đã hướng dẫn.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    149

    Visual C# Code:
    1. //Draw grid
    2.  
    3. {
    4.     using (Graphics g = Graphics.FromImage(draw.Image)) {
    5.         for (int x = 0; x <= bWidth; x++) {
    6.             for (int y = 0; y <= bHeight; y++) {
    7.                 g.DrawLine(Pens.Black, new Point(xStart + x * bScale, yStart), new Point(xStart + x * bScale, yStart + ySize));
    8.                 g.DrawLine(Pens.Black, new Point(xStart, yStart + y * bScale), new Point(xStart + xSize, yStart + y * bScale));
    9.             }
    10.         }
    11.     }
    12.  
    13.     //Save as PNG-file
    14.     Bitmap bmp = new Bitmap(draw.Width, draw.Height);
    15.     draw.DrawToBitmap(bmp, new Rectangle(0, 0, draw.Width, draw.Height));
    16.     bmp.Save("D:\\output.png", Imaging.ImageFormat.Png);
    17.     bmp.Dispose();
    18. }
    tham khảo tại : http://www.vbforums.com/showthread.php?t=651770
    Sharing for success!

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi angeltrongminh Xem bài viết
    Visual C# Code:
    1. //Draw grid
    2.  
    3. {
    4.     using (Graphics g = Graphics.FromImage(draw.Image)) {
    5.         for (int x = 0; x <= bWidth; x++) {
    6.             for (int y = 0; y <= bHeight; y++) {
    7.                 g.DrawLine(Pens.Black, new Point(xStart + x * bScale, yStart), new Point(xStart + x * bScale, yStart + ySize));
    8.                 g.DrawLine(Pens.Black, new Point(xStart, yStart + y * bScale), new Point(xStart + xSize, yStart + y * bScale));
    9.             }
    10.         }
    11.     }
    12.  
    13.     //Save as PNG-file
    14.     Bitmap bmp = new Bitmap(draw.Width, draw.Height);
    15.     draw.DrawToBitmap(bmp, new Rectangle(0, 0, draw.Width, draw.Height));
    16.     bmp.Save("D:\\output.png", Imaging.ImageFormat.Png);
    17.     bmp.Dispose();
    18. }
    tham khảo tại : http://www.vbforums.com/showthread.php?t=651770
    Mình sử dụng using(Graphics .... ) trong hàm Paint của picturebox thì nhận được báo lỗi ArgumentNullException was unhandled.
    Value cannot be null.
    Parameter name : image
    Mình vẫn chưa làm được cái này :(.Bạn nào giúp mình với

Các đề tài tương tự

  1. vẽ đa giác trên picturebox
    Gửi bởi prolove101189 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 26-12-2012, 08:32 AM
  2. Graphic Save dữ liệu trên picturebox vào 1 file(picbox vẽ đồ thị Dijsktra))
    Gửi bởi frankboy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 20-10-2011, 02:40 PM
  3. xóa có chọn lọc những gì đã vẽ trên pictureBox
    Gửi bởi nguyenduykhanh1986 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 23-11-2010, 06:09 PM
  4. Hiển thị .ico trên picturebox | Xem icon bằng picturebox
    Gửi bởi nqthanh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 15-06-2009, 10:26 AM
  5. Làm sao vẽ một hình lên trên 1 picturebox trong c#
    Gửi bởi tom_and_jerry trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 25-05-2008, 12:15 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn