Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cách vẽ đường thẳng đè lên hình sau khi load C#?

    Chào các bác! Em mới tập tành học C# nên có một số vấn đề về đồ họa cần hỏi các bác, mong các bác giúp đỡ [IMG]images/smilies/1.gif[/IMG]

    Đây là đoạn code load ảnh từ máy tính:
    Mã:
    OpenFileDialog o = new OpenFileDialog();
                o.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
                if (o.ShowDialog() == DialogResult.OK)
                {
                    Bitmap bit = new Bitmap(op.FileName);
                    pictureBox1.Image = bit;           
                }
    Đây là phần MouseDown:
    Mã:
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {            
                x1 = e.X;
                y1 = e.Y;  
                                 
                isBegin = true;
            }
    Đây là phần MouseMove:
    Mã:
    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
            {          
                x2 = e.X;
                y2 = e.Y;    
           
                if (isBegin)
                    this.pictureBox1.Refresh();
            }
    Đây là phần MouseUp:
    Mã:
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
                this.g.DrawLine(pen, x1, y1, x2, y2); // g là đối tượng thuộc lớp Graphics
                RefreshPicBox();
                isBegin = false;
    }
    Hàm RefreshPicBox():
    Mã:
    private void RefreshPicBox()
            {           
                bit = Drawbit.Clone(new Rectangle(0, 0, this.pictureBox1.Width,         this.pictureBox1.Height),Drawbit.PixelFormat);// bit và Drawbit thuộc lớp Bitmap
                this.pictureBox1.Image = bit;
            }
    Sự kiện Paint của PictureBox:
    Mã:
    private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                g.DrawLine(pen, x1, y1, x2, y2);
             }
    Vấn đề nó thế này: Khi em load hình lên và vẽ đường thẳng đè lên hình thì hình bị mất, chỉ tồn tại đường thẳng trên pictureBox [IMG]images/smilies/21.gif[/IMG]. Nếu trong phần MouseUp em bỏ hàm //RefreshPicBox() thì sẽ vẽ đè lên được nhưng khi vẽ nét thứ 2 thì nó mất nét vẽ thứ nhất [IMG]images/smilies/17.gif[/IMG]. Tương tự vẽ nét 3 thì mất nét 2... Các bác xem giúp em nên sửa hay là cần phải thêm, bớt chỗ nào.

    Thanks các bác nhiều.. Chụt..[IMG]images/smilies/kiss.gif[/IMG].. Chụt..[IMG]images/smilies/kiss.gif[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •