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

Đề tài: Thuật giải tô màu chỉ tô được hình nhỏ, sao để tô hình lớn ??

  1. #1
    Ngày gia nhập
    03 2007
    Bài viết
    179

    Mặc định Thuật giải tô màu chỉ tô được hình nhỏ, sao để tô hình lớn ??

    Thuật giải tô màu trong môn đồ họa
    C++ Code:
    1. void To(CDC *pDC, int x, int y,int fill_color, int boundary_color)
    2. {
    3.     int color=0;
    4.     color = pDC->GetPixel(x, y);// ** tràn ở đây nếu hình lớn
    5.     if((color != fill_color) && (color != boundary_color))
    6.     {
    7.         pDC->SetPixel(x, y, fill_color);
    8.         To(pDC, x-1, y, fill_color, boundary_color);
    9.         To(pDC, x, y+1, fill_color, boundary_color);
    10.         To(pDC, x+1, y, fill_color, boundary_color);
    11.         To(pDC, x, y-1, fill_color, boundary_color);
    12.     }
    13. }
    nhưng vói hình lớn thì nó bị tràn, ai biết cách khác phục chỉ giúp

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

    Không biết bạn tô màu hình lớn ở đây bạn vẽ hình lớn như thế nào? Vì chỉ cần có 1 pixel viền bị hở thì đã tràn rôì

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

    không tràn màu, hình vẫn kính, nhưng khi hình có diện tích lớn thì nó tô mới 1/2(hay ít hơn) thì bị "văng ra khỏi chuơng trình", mình mong mọi người có thể giúp mình biết đó là lỗi gì?

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Ha dùng Borland C à ? Đồ họa này là thuộc thư viện gì thế ? Nghi cái giải thuật loang bị sai ( không chắc lắm )vì bi h ko có compiler T_T, Ha coi lại lời gọi đệ qui đầu tiên xem :
    C Code:
    1. To(pDC, x-1, y, fill_color, boundary_color);
    Nếu fill_color và boundary_color là + thì chắc sẽ tràn stack.
    Đã được chỉnh sửa lần cuối bởi rox_rook : 11-03-2008 lúc 06:07 AM.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Nguyên nhân tràn stack là do đệ quy.

    Như vậy chỉ cần dùng STACK để khử Đệ Quy đi là xong! Chịu khó lên google tìm thuật toán Boundary Fill 1 xíu là ra mà.

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Thuật giải tô màu chỉ tô được hình nhỏ, sao để tô hình lớn ??

    Trích dẫn Nguyên bản được gửi bởi BuithiHa Xem bài viết
    không tràn màu, hình vẫn kính, nhưng khi hình có diện tích lớn thì nó tô mới 1/2(hay ít hơn) thì bị "văng ra khỏi chuơng trình", mình mong mọi người có thể giúp mình biết đó là lỗi gì?
    Nghĩa là khi x và y là lớn? Hay màn hình lớn thế nào?

    Nếu là đồ họa thì phải xét đến mode của đồ họa chứ? Đâu phải mode nào cũng giống nhau? Thêm hàm checkmode nữa xem nào?
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Hì mình hiểu ý bạn mà , đúng là thuật toán tô màu kiểu này thế nào cũng tràn stack cho mà coi , thế thì bạn phải cải tiến nó hoặc chuyển sang thuật toán khác chứ . Trường khtn của bạn có cuốn nhập môn đồ hoạ của Hoàng Kiếm khá hay đây . Nó cải tiến khá tốt thuật toán tô màu lan toả 4 hướng này và giới thiệu một số thuật toán tô màu khác như tô màu theo đường thẳng . Tiếc là mình ko có code sẵn . Thông cảm nha .
    ttecak ?

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    Rừng Amazon
    Bài viết
    101

    Cái này để tô được 1 khoảng lớn sẽ rất mất thời gian, 1 điều cấm kị trong Paint & Repaint đối với các ứng dụng Windows.

    Điều thứ 2, bạn khôgn check điều kiện biên khi gọi đệ quy. Nếu cái x, y của bạn vượt ra khỏi độ phân giải của màn hình thì cũng sẽ có exception.

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

    cho e xin 1 bài hoàn chỉnh đi. Thanks

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

  1. Giải thuật shaker sort. Giúp mình giải thuật với?
    Gửi bởi nguyenhai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 29-01-2015, 10:53 PM
  2. Giải thuật Giải thuật Chia để trị, hướng đi với giải thuật này thế nào?
    Gửi bởi maivivan13 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 23-10-2012, 10:22 PM
  3. Bài tập C Cần giải giúp 3 câu trong đề thi kĩ thuật lập trình C và Cấu trúc dữ liệu và giải thuật
    Gửi bởi nguyenthi0602 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-09-2012, 08:42 PM
  4. Giải thuật xắp xếp Quick sort, biểu diễn bằng hình ảnh giải thuật này?
    Gửi bởi yuklong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 09-06-2012, 09:20 AM
  5. Tài liệu về giải thuật mã hóa. Mã hóa file theo giải thuật DES. Ai có giúp mình?
    Gửi bởi daolong83 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 6
    Bài viết cuối: 17-07-2009, 11:28 PM

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