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

Đề tài: Hỏi về PainEvent của PictureBox.

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    21

    Question Muốn sự kiện paint không vẽ lúc load form như thế nào?

    Mình tạo 1 project winform rồi sử dụng control PictureBox và 1 Botton. Trong PictureBox có sự kiện Pain với hàm của nó là:

    Code:
     private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
                e.Graphics.DrawLine(
                new Pen(Color.Black,5),
                new Point(0, 0),
                new Point(0, pictureBox1.Size.Height));
                
                e.Graphics.DrawLine(
                new Pen(Color.Black,3),
                new Point(0, pictureBox1.Size.Height/2),
                new Point(pictureBox1.Size.Width,(pictureBox1.Size.Height/2)));
    }
    Vì nó là sự kiện nên mình nghĩ chỉ khi người dùng có tác động gì đó thì nó mới xảy ra sự kiện, nhưng khi viết hàm ( Các hàm Graphic) bên trong hàm này thì chỉ cần khi debug là nó đã tự động thực hiện mà người dùng chưa tương tác gì cả (Ở đây mình vẽ 1 đường thẳng và 1 đường elip)

    Mình muốn khi nhấn vào nút Botton thì nó mới thực hiện các hàm Graphic này thì làm thế nào ạ? Mới học C# nên gà mờ lắm, mong các bro giúp đỡ!
    Đã được chỉnh sửa lần cuối bởi linh_060 : 30-10-2011 lúc 05:07 PM.

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Sự kiện được xảy ra khi có biến cố nào đó, không nhất thiết do người dùng, VD như Paint hay timer.

    Sự kiện Paint là sự kiện khi windows gửi WM_PAINT cho ứng dụng.

    Khi bắt đầu chạy, thì windows cần biết Chương trình phải vẽ cửa sổ như thế nào nên nó gửi WM_PAINT cho Chương trình.
    Bạn muốn khi người dùng click chuột vào button, nó mới vẽ thì dùng thêm biến đánh dấu đã click sau đó gọi Invalidate() nhé.

    Ps: đặt tiêu đề như bạn là bị xoá đó. đặt lại tiêu đề đi, Viết bấy nhiêu cho bạn mà bị xoá là bực bạn đấy.
    VD: "Muốn sự kiện paint không vẽ lúc load form như thế nào?" chẳng hạn
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 31-10-2011 lúc 08:27 PM.

  3. #3
    Ngày gia nhập
    05 2010
    Bài viết
    21

    Thanks bạn nhiều lắm . Nhưng bạn có thể nói rõ hơn về "biến đánh dấu đã click" không? thực sự mình chưa có khái niệm về nó, mong bạn giúp đỡ
    Trích dẫn Nguyên bản được gửi bởi trungkien45 Xem bài viết
    Sự kiện được xảy ra khi có biến cố nào đó, không nhất thiết do người dùng, VD như Paint hay timer.

    Sự kiện Paint là sự kiện khi windows gửi WM_PAINT cho ứng dụng.

    Khi bắt đầu chạy, thì windows cần biết phải vẽ cửa sổ như thế nào nên nó gửi WM_PAINT cho Chương trình.
    Bạn muốn khi người dùng click chuột vào button, nó mới vẽ thì dùng thêm biến đánh dấu đã click sau đó gọi Invalidate() nhé.

    Ps: đặt tiêu đề như bạn là bị xoá đó. đặt lại tiêu đề đi, Viết bấy nhiêu cho bạn mà bị xoá là bực bạn đấy.
    VD: "Muốn sự kiện paint không vẽ lúc load form như thế nào?" chẳng hạn

  4. #4
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Như sau:
    có một biến bool clicked=false khi load form
    Code:
     private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
           if(clicked)
           {
                e.Graphics.DrawLine(
                new Pen(Color.Black,5),
                new Point(0, 0),
                new Point(0, pictureBox1.Size.Height));
                
                e.Graphics.DrawLine(
                new Pen(Color.Black,3),
                new Point(0, pictureBox1.Size.Height/2),
                new Point(pictureBox1.Size.Width,(pictureBox1.Size.Height/2)));
           }
    }
    Trong Buton_Click

    Code:
    clicked=true;
    pictureBox1.Invalidate();

  5. #5
    Ngày gia nhập
    05 2010
    Bài viết
    21

    Thanks bạn nhiều lắm, mình làm được rồi, tại mình chưa đọc kỹ thôi , hiccc ,nhanh nhanh ẩu đoảng, rất cảm ơn bạn
    Đã được chỉnh sửa lần cuối bởi linh_060 : 30-10-2011 lúc 08:57 PM.

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

  1. Giúp đỡ về bắt sự kiện cho phần tử picturebox trong mảng picturebox
    Gửi bởi mr_congdanh1610 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 04-10-2012, 09:36 PM
  2. Picturebox trong winform. Làm sao load ảnh vào picturebox?
    Gửi bởi tinhspt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 02-06-2012, 07:18 PM
  3. Graphic Làm sao để vẽ một đường thẳng từ picturebox này đến picturebox kia trong C#?
    Gửi bởi a25251325z trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 07-05-2011, 01:14 PM
  4. PictureBox transperent trên PictureBox khác.
    Gửi bởi dimchicken trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 09-05-2010, 10:23 AM
  5. 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

Tags của đề tài này

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