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 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0

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

    Vẽ một hình chữ nhật trong suốt

    Các bạn ơi cho tui hỏi: Tôi muốn vẽ một hình chữ nhật, trong hình này thì chỉ khi gặp một màu nào đó thì biến thành màu khác mà mình định vẽ, còn các màu còn thì vẫn giữ nguyên (ko bị mất đi khi vẽ hình chữ nhật đó). Giống như trong phần mềm CoolEdit ý. Khi mở 1 file âm thanh thì nó vẽ cho ta sóng âm có màu xanh trên nền màu đen, khi người sử dụng nhấn chuột trái và kéo thì nó vẽ cho ta một hình chữ nhật màu trắng nhưng vẫn nhìn rõ được phần vẽ sóng trong hình chữ nhật đó (trong hình chữ nhật đó chỉ có chỗ nào là màu đen thì nó biến thành màu trắng thôi). Ai biết hay có ý tưởng vẽ nó thế nào thì chỉ giáo giùm với

    Thanh you verry much

    Hiện nay mình đang có ý tưởng thế này: ta sẽ duyệt tất cả các điểm trong hình chữ nhật, nếu điểm nào có màu đen thì ta vẽ lại thành màu trắng, còn các điểm có màu khác thì bỏ qua. Vì mới làm quen với VC nên ko biết nó có lệnh nào lấy màu và tô màu cho từng điểm không, seach mãi mà vẫn chưa ra. Ai biết chỉ giùm với. Cám ơn nhiều

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

    Thay vì vẻ nguyên hình chử nhật, tại sao bạn không vẻ bốn đường thẳng!
    Bạn ấy thích làm hình chữ nhật cho nó trực quan & đẹp mắt.


    Hiện nay mình đang có ý tưởng thế này: ta sẽ duyệt tất cả các điểm trong hình chữ nhật, nếu điểm nào có màu đen thì ta vẽ lại thành màu trắng, còn các điểm có màu khác thì bỏ qua. Vì mới làm quen với VC nên ko biết nó có lệnh nào lấy màu và tô màu cho từng điểm không, seach mãi mà vẫn chưa ra. Ai biết chỉ giùm với. Cám ơn nhiều
    Hàm lấy màu và tô màu thì có (SetPixel và GetPixel). Nhưng một hình chữ nhật có rất nhiều điểm, bạn làm với từng điểm như vậy là rất chậm, ko tối ưu. Mình nghĩ nên dùng cách khác.

    Mình nghĩ ý tưởng này, khi người ta kéo rê chuột thì ta có thể vẽ một hình chữ nhật mới đại diện cho vùng lựa chọn với kiểu vẽ là Invert chẳng hạn. Nhưng nếu như thế thì cả màu nền cũng đổi theo.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    SelectObject NULL_BRUSH vào DC vẽ.

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

    Bạn ấy thích làm hình chữ nhật cho nó trực quan & đẹp mắt.
    Không hẳn. Nếu nói mục đích là hướng đối tượng thì đúng hơn. Vì nếu vẽ 4 đoạn thẳng thì lỡ sau này phát triển việc kéo, thay đổi kích thước thì làm sao ?


    Hàm lấy màu và tô màu thì có (SetPixel và GetPixel). Nhưng một hình chữ nhật có rất nhiều điểm, bạn làm với từng điểm như vậy là rất chậm, ko tối ưu.
    Vậy xin hỏi bạn chứ C++ nó tô, vẽ theo kiểu nào ? Không setPixel thì là gì ? Có khác chăng là nó dùng algo tốt nên vẽ nhanh thôi.

    Rgs.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cám ơn các bạn đã góp ý kiến

    Thay vì vẻ nguyên hình chử nhật, tại sao bạn không vẻ bốn đường thẳng!
    Nếu chỉ vẽ 4 đường thẳng ko thôi thì ko được trực quan cho lắm

    Hàm lấy màu và tô màu thì có (SetPixel và GetPixel). Nhưng một hình chữ nhật có rất nhiều điểm, bạn làm với từng điểm như vậy là rất chậm, ko tối ưu. Mình nghĩ nên dùng cách khác.
    Đúng như bạn nói là thao tác trên điểm rất chậm, mặt khác nữa là, tớ chỉ muốn thay đổi màu nền thôi, mà cái màu lày là background lên dùng hàm GetPixel ko lấy được màu của nó => Ý tưởng của tớ đã thất bại

    Mình nghĩ ý tưởng này, khi người ta kéo rê chuột thì ta có thể vẽ một hình chữ nhật mới đại diện cho vùng lựa chọn với kiểu vẽ là Invert chẳng hạn. Nhưng nếu như thế thì cả màu nền cũng đổi theo.
    Bạn có thể nói rõ hơn về ý tưởng trên ko, vì tớ tự mò mẫm trong VC nên ko hiểu sâu về đồ hoạ nên rất mù mờ. Tớ cũng đã vẽ một hình chữ nhật theo sự kiện kéo rê chuột rùi nhưng nó che tất cả những gì tớ vẽ trước đó.
    Bạn nào có ý tưởng gì thì cứ góp ý cho mình nhé
    Thanks nhiều!

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

    Vậy xin hỏi bạn chứ C++ nó tô, vẽ theo kiểu nào ? Không setPixel thì là gì ? Có khác chăng là nó dùng algo tốt nên vẽ nhanh thôi.
    SetPixel và GetPixel mà dùng để xử lí đồ họa thì chậm lắm bạn ơi, ko ai dùng đâu. Người ta thường dùng DirectX và OpenGL.

    Cho bạn thấy tầm quan trọng của công nghệ xử lí đồ họa. Ví dụ với Windows Vista, nếu bạn để chế độ giao diện là Vista Basic thì Windows xử lí đồ họa theo kiểu DirectX Draw (2D) nên khi kéo cửa sổ ta thấy có vệt theo sau. Còn dùng giao diện Windows Aero, nó dùng DirectX 3D nên kéo cửa sổ ko bao giờ có vệt theo sau.

 

 

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
  •