Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 21 kết quả

Đề tài: Hỏi về cách tăng độ dài panel

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Mặc định Hỏi về cách tăng độ dài panel

    mình ghi vào panel 300 cái ảnh cỡ lớn ,nhưng panel chỉ hiển thị đc ~ 30 cái , và chiều cao và chiều dài tối đa cũng chỉ dc 32768 Pixel . Vậy có cách nào tăng chiều cao và rộng của nó không ai giúp với

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

    H mới biết là có vụ giới hạn kích thước ntn, nhưng max là 65535 thì phải(m chỉnh số lớn hơn thì nó tự chuyển về số này). ntn thì chắc phải tự tạo thanh scroll + tự vẽ thôi.

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    H mới biết là có vụ giới hạn kích thước ntn, nhưng max là 65535 thì phải(m chỉnh số lớn hơn thì nó tự chuyển về số này). ntn thì chắc phải tự tạo thanh scroll + tự vẽ thôi.
    ~~cái giới hạn đó có 1 số người nói là scrollbar của c# nó là 16bit nên chỉ kéo đến 32768 mà thôi , T___________T , chả biết có thật ko , mình để autoscroll của panel , nên không thể dãn đc thêm nữa :(( , còn xài cái vscrollbar ngoài thì lắp vài thử , nhưng chả hiểu do không chỉnh đúng thông số không mà nó cũng ko được :((

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Cái này bác chưa hiểu ý rồi. Cái này cũng hơi loằng ngoằng 1 chút.
    Ví dụ bác có 20 ảnh, mỗi ảnh định hiện trong 1 khung có kích thước 30x30 vậy độ rộng của panel cần sẽ là 20*30=600. Đặt kích thước thật của panel là 30*30(vừa đủ cho 1 khung ảnh).
    Mỗi khi click vào scroll thì giả sử sẽ cuộn trái hay cuộn phải 1 khoảng là 10 chẳng hạn=> đặt minimum=0 & maximum=600/10=60(của scroll nhé). Ví dụ 2 trường hợp cho bác dễ hiểu nhé

    1. Giả sử value của scroll=2 => panel phải bị ẩn đi 2*10=20
    -Do 20<30 là độ rộng của 1 ảnh => ảnh 1 sẽ bị khuất 20 của bên phải và nhìn thấy 10 của bên trái.
    -Do độ rộng của panel là 30 => ảnh 2 sẽ nhìn thấy 20 bên trái & khuất 10 bên phải.
    Nói vậy cho bác hiểu thôi, còn trong trường hợp này thì vẽ ảnh 1 ở vị trí là (-20,0), vẽ ảnh 2 ở (10,0).
    2. Giả sử value của scroll=8 => panel bị ẩn bên trái là 8*10=80. 80/30=2 => 2 ảnh đầu bị che khuất hoàn toàn, ảnh 3 thì giống như ảnh 1 ở giả sử trên=> bác lại vẽ ảnh 3,4 như ảnh 1, 2 ở trên.

    Có 1 cách nữa là tạo cái pictureBox-cái này hay là k phải vẽ mà chỉ cần thay đổi tọa độ picturebox là dc-ví dụ trong giả sử thứ 2 mà mình nói nhé, pictureBox1 sẽ chứa ảnh 3 và có Left=-20, pictureBox2 chứa ảnh 4 & có Left=10.

    Ở đây do mình giả sử chiều rộng thực của panel là bằng với chiều rộng khung ảnh nên số picturebox =2 còn thực tế số picturebox=panel.Width/khungAnh.Width +1;

    Cái này k biết đã phải là giải pháp hay chưa-nhưng nó là cách dùng scroll khá hay mà sau này nếu gặp phải trường hợp cần tạo control chứa 1 danh sách sẽ cần đến nên m nói hơi dài 1 chút.
    Đã được chỉnh sửa lần cuối bởi Solewind.IT : 01-10-2011 lúc 11:45 PM.

  5. #5
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Cái này bác chưa hiểu ý rồi. Cái này cũng hơi loằng ngoằng 1 chút.
    Ví dụ bác có 20 ảnh, mỗi ảnh định hiện trong 1 khung có kích thước 30x30 vậy độ rộng của panel cần sẽ là 20*30=600. Đặt kích thước thật của panel là 30*30(vừa đủ cho 1 khung ảnh).
    Mỗi khi click vào scroll thì giả sử sẽ cuộn trái hay cuộn phải 1 khoảng là 10 chẳng hạn=> đặt minimum=0 & maximum=600/10=60(của scroll nhé). Ví dụ 2 trường hợp cho bác dễ hiểu nhé

    1. Giả sử value của scroll=2 => panel phải bị ẩn đi 2*10=20
    -Do 20<30 là độ rộng của 1 ảnh => ảnh 1 sẽ bị khuất 20 của bên phải và nhìn thấy 10 của bên trái.
    -Do độ rộng của panel là 30 => ảnh 2 sẽ nhìn thấy 20 bên trái & khuất 10 bên phải.
    Nói vậy cho bác hiểu thôi, còn trong trường hợp này thì vẽ ảnh 1 ở vị trí là (-20,0), vẽ ảnh 2 ở (10,0).
    2. Giả sử value của scroll=8 => panel bị ẩn bên trái là 8*10=80. 80/30=2 => 2 ảnh đầu bị che khuất hoàn toàn, ảnh 3 thì giống như ảnh 1 ở giả sử trên=> bác lại vẽ ảnh 3,4 như ảnh 1, 2 ở trên.

    Có 1 cách nữa là tạo cái pictureBox-cái này hay là k phải vẽ mà chỉ cần thay đổi tọa độ picturebox là dc-ví dụ trong giả sử thứ 2 mà mình nói nhé, pictureBox1 sẽ chứa ảnh 3 và có Left=-20, pictureBox2 chứa ảnh 4 & có Left=10.

    Ở đây do mình giả sử chiều rộng thực của panel là bằng với chiều rộng khung ảnh nên số picturebox =2 còn thực tế số picturebox=panel.Width/khungAnh.Width +1;

    Cái này k biết đã phải là giải pháp hay chưa-nhưng nó là cách dùng scroll khá hay mà sau này nếu gặp phải trường hợp cần tạo control chứa 1 danh sách sẽ cần đến nên m nói hơi dài 1 chút.
    T____T , chính xác thì buồn thế này bác ạ , ảnh mình có kích thước khá lớn ~ 800x1300 , chiều cao mỗi cái ~ 1300 , và mình xếp nó chồng nên nhau , mỗi cái cho vào 1 cái picturebox rồi nhét vào panel, Tức chiều cao value của scrollbar panel phải là 1300x30 ~ 39.000 . Nhưng chiều cao của scrollbar panel chỉ đến 32.768 = 2^16 (chiều dài max của scrollbar window form - scrollbar 16 bit) . nên khi nó ghi ~ 25 bức hình thì còn 5 bức kia hết chỗ ghi nên nó không hiển thị được , hoặc giả nó ko kéo được đến chỗ đó .

    Mình để 1 biến để messagebox.show ra độc dài của location : thấy nó dài tới tận ~ >40.000 . Nên tức là cái scrollbar của panel để autoscroll không thể nào kéo dãn ra nữa T_____T

    Hiện mình đang muốn tìm giải pháp để kéo dãn thanh scrollbar đó đây , và đó là điều mình muốn tìm T_____T

    Hiên trên internet mình cũng thấy 1 người bị vấn đề tương tự , nhưng có vẻ cũng chưa thấy tìm ra cách ~~
    http://stackoverflow.com/questions/9...t-int-winforms

  6. #6
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Mặc định Hỏi về cách tăng độ dài panel

    Làm như mình nói là giải quyết dc rồi còn gì. Code cũng đơn giản-khoảng 20 dòng là xong rồi. CHăm chút thêm vào mấy cái hiệu ứng khi cuộn thì chắc khoảng 40 dòng là sẽ nhìn như thật.

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Làm như mình nói là giải quyết dc rồi còn gì. Code cũng đơn giản-khoảng 20 dòng là xong rồi. CHăm chút thêm vào mấy cái hiệu ứng khi cuộn thì chắc khoảng 40 dòng là sẽ nhìn như thật.
    Mình tuy hiểu ý tưởng của bạn , T___T nhưng mới bắt tay học c# , nên ko biết cách vẽ đó , bạn có thể thí dụ code thử cho mình 1 ví dụ nhỏ đc không . thx nhìu

  8. #8
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Demo cho bác đây http://www.mediafire.com/?0lnbtori05249j1. Viết ntn thì hiện bao nhiêu ảnh cũng dc.

  9. #9
    Ngày gia nhập
    09 2011
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi Solewind.IT Xem bài viết
    Demo cho bác đây http://www.mediafire.com/?0lnbtori05249j1. Viết ntn thì hiện bao nhiêu ảnh cũng dc.
    thx nhiều để mình thử xem sao


    ps: Bạn để biến hcrollbar.Maximum T___T , là bị gặp chở ngại rồi , sau khi mình nhét 1 dãy các ảnh vào , rồi mình in ra hcrollbar.Maximum , nó = hơn 40.000 . và nó chỉ kéo đến 32.760 thôi T____T , tức được 1 phần các ảnh thôi T___T
    Đã được chỉnh sửa lần cuối bởi luonghm : 04-10-2011 lúc 03:17 PM.

  10. #10
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Cái này chạy phụ thuộc hệ điều hành, mình chỉnh thử thì thấy Maximum của scrollbar nhận max của int tức là > 2 tỷ nên lấy tỷ lệ là 1-1, cách code draw ảnh thì bác biết rồi, h bác cho tỷ lệ 1:10 như mình nói lúc đầu ấy, tức là 1 value của scroll thì tương ứng với cuộn 10 của picture, vậy max sẽ là 327600. bác cứ làm đi nếu k dc thì tối nay m sẽ code cho.

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

  1. Graphic Bị mất ico trên panel khi panel bị che mất.
    Gửi bởi scorpionzz trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 09-04-2013, 06:28 PM
  2. Fincontrol các control trong Panel khi tạo panel bằng code behind
    Gửi bởi quangbinhit trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 13-12-2012, 09:11 PM
  3. Graphic Làm Sao Remove Panel Các Control Bên Dưới Panel Đó Không Bị Nhấp Nháy
    Gửi bởi killdog9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 27-09-2012, 12:55 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