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

Đề tài: Vẽ một điểm lên hình ảnh có sẵn trong lập trình C#?

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    2

    Question Vẽ một điểm lên hình ảnh có sẵn trong lập trình C#?

    Mình làm một cái form có pictureBox chứa 1 image. pictureBox đặt trong panel có thể scroll 2 chiều. Khi click chuột lên image thì trên đó vẽ lên 1 điểm màu đỏ (đại loại vậy).

    Vấn đề là khi mình kéo thanh cuộn thì các điểm đã vẽ khi khuất đi cũng sẽ mất theo. Giống như mình lấy giẻ lau bảng vậy. Thậm chí khi bật một window nào đó lên che mấy điểm đã vẽ đó đi thì nó cũng sẽ bị mất.

    Bạn nào có cách để lưu giữ trạng thái đã vẽ trên bức ảnh đó không?



    Visual C# Code:
    1. private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
    2.         {
    3.            
    4.             if (pictureBox1.Image == null)
    5.             {
    6.                 MessageBox.Show("No image loaded!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    7.                 return;
    8.             }
    9.             drawByClick(e.X,e.Y );          
    10.            
    11.         }
    12.  
    13.  
    14. private void drawByClick(float x, float y)
    15.         {
    16.             Graphics g = this.pictureBox1.CreateGraphics();            
    17.             Pen p = new Pen(Color.Blue, 3);
    18.             g.DrawRectangle(p,x,y,3,3);
    19.             Brush b = new SolidBrush(Color.Blue);
    20.             g.FillRectangle(b,x,y,3,3);
    21.  
    22.         }
    Đã được chỉnh sửa lần cuối bởi kernel : 17-03-2009 lúc 02:27 PM.

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    169

    + Cái bạn làm mới là vẽ lên bufer của device context thôi, do đó khi form đc redraw thì hình cũng mất đi!
    + Nếu bạn muốn lưu lại hình thì phải vẽ vào 1 image chứ ko dùng g.DrawRectangle(p,x,y,3,3); đc!

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

    tất nhiên rồi bạn mọi thứ bạn vẻ ngoài hàm paint đều bị mất khi bạn minimize hay nhửng thứ mà cần phải vẽ lại cả cái form của bạn.
    Vì vậy theo mình nghĩ bạn nên lưu lại vị trí những điểm đó sau đó gọi hàm drawbyclick những điểm đó trong hàm paint

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    2

    Đã thử sự kiện pain okie...Nhưng ở đây mình muốn xử lý thêm sự kiện chuột. Tức khi click chuột thì vẽ lên đó.
    Đã được chỉnh sửa lần cuối bởi kernel : 19-03-2009 lúc 11:42 AM.

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn bắt sự kiện chuột, xử lý và gọi phương thức Refresh() để vẽ lại.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

  1. Vẽ đồ thị với Javascript và C# từ Database có sẵn
    Gửi bởi phamvannam0301 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 29-05-2017, 08:52 AM
  2. hiện tên các folder trong 1 đường dẫn định sẵn lên combobox
    Gửi bởi roy_k trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 16-05-2012, 03:51 AM
  3. làm thế nào để click vào button sẽ load lên file .txt mình lưu sẵn trong thư mục Debug ?
    Gửi bởi thanthoai101010 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 01-12-2011, 08:14 PM
  4. Vẽ lên Cell trong Datagirdview
    Gửi bởi C Sharp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 23-05-2011, 09:38 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