Y2 – Visual Graph – Minh họa việc biểu diễn đồ thị bằng GDI+ (update version 1.3.3)

Đây là chương trình nhằm mục đích minh họa cho việc biểu diễn và cài đặt các thuật toán liên quan đến đồ thị thông qua thuật toán Floyd. Bạn có thể dùng chuột để vẽ và di chuyển các node của đồ thị, khoảng cách giữa hai node cũng như ma trận kề (adjacency matrix) của đồ thị sẽ được tính toán và tự động thay đổi theo.

Chương trình này cũng là một ví dụ đơn giản về cách vẽ, di chuyển và thay đổi kích thước các control bằng chuột trong quá trình runtime. Các đối tượng trong form hầu hết là control, bạn có thể thay thế hoàn toàn bằng GDI+ nhưng công việc xử lý sẽ tốn kém hơn.

Các công cụ vẽ bao gồm (trong Toolbox):

Tên Phím tắt Công dụng
Move Alt+M, 1 Di chuyển đỉnh
Node Alt+N, 2 Vẽ, di chuyển đỉnh
Edge Alt+E, 3 Vẽ cạnh giữa 2 đỉnh
Eraser Alt+R, 4 Xóa đỉnh, cạnh

Update version 1.3.3 (21/3/2013)

– Cố định tốc độ di chuyển của bóng dẫn đường (bug).

– Cho phép chọn (edge tool), xoá cạnh (eraser tool).

Download src + demo

Update version 1.3.2 (3/5/2011)

– Thêm hiệu ứng di chuyển trên đường đi ngắn nhất giữa 2 đỉnh.

– Thêm công cụ vẽ đồ thị

– Hiển thị đường đi ngắn nhất (gián tiếp) trên ma trận kề.

– Lưu trạng thái của chương trình sau khi thoát.

Download sourcecode+demo

Y2 Visual Graph 1.3.2

Update version 1.2 (29/4/2011)

Thêm chức năng xóa node, edge

– Thay đổi nhỏ trong thuật toán vẽ

– Không cho phép di chuyển node ra ngoài khung nhìn

Download sourcecode+demo

Y2 Visual Graph 1.2

Y2 Visual Graph 1.2

Update version 1.1: (26/4/2011)

– Hỗ trợ đồ thị vô hướng và có hướng

– Một vài thay đổi nhỏ trong thuật toán vẽ

Download sourcecode+demo

Y2 Visual Graph 1.1

Y2 Visual Graph 1.1

Sử dụng:

– Dùng chuột trái để vẽ node và di chuyển, chuột phải để tạo đường đi giữa các node.

Download:

Phiên bản 1.0 (VC# 2010)

58 thoughts on “Y2 – Visual Graph – Minh họa việc biểu diễn đồ thị bằng GDI+ (update version 1.3.3)

  1. Khi chạy chương trình trong Visual 2010 mình bị lỗi sau:
    An unhandled exception of type ‘System.NullReferenceException’ occurred in Y2VisualGraph.exe
    Additional information: Object reference not set to an instance of an object.
    Các bạn nào biết cách khắc phục xin chỉ cho mình với !
    Thanks !

    Trả lời
      • Khi mình chạy phiên bản mới nhất của bạn ( version 1.3.2 (3/5/2011) ) trong Visual Studio 2010 thì bị lỗi duy nhất như trên tại dòng:
        protected override void OnLoad(EventArgs e)
        {
        GraphData data= graphUI1.LoadGraph(FILENAME);
        cboFrom.SelectedIndex=data.FormNode;//Lỗi ở đây !!!!!
        cboTo.SelectedIndex=data.ToNode;
        chkUndirectedGrapth.Checked=data.IsUndirectedGraph;
        base.OnShown(e);
        }
        Còn các phiên bản cũ hơn của bạn thì mình đều cho chạy được ngon lành, mình không hiểu tại sao, liệu do mình chưa chỉnh các thông số gì cho Visual Studio hay ko ??

        Mong bạn xem giúp. Chân thành cảm ơn bạn ^^.

  2. Mình nghĩ bạn nên cho ví dụ về cách lưu dữ liệu trước bởi vì cách in ma trận phụ thuộc vào cách lưu dữ liệu của đồ thị. Hơn nữa thuật toán cũng chỉ cần 2 vòng lặp lồng nhau và bạn có thể dễ dàng viết được nếu như đã học lập trình.

    Trả lời
  3. Cậu cho tớ hỏi một chút ^ ^
    Trong class GraphUI, thì this.Control.Count cho ta biết số đối tượng trong Graph đúng vậy ko cậu?
    Chẳng hạn trong đồ thị tớ đã vẽ 4 nút thi kể thêm cả cái matrix được vẽ kèm nữa là ta có this.Control.Count = 5 đúng ko cậu?

    Trả lời
  4. Cho mình hỏi dữ liệu đầu vào của file data.bin bạn tạo thế nào vậy? Minh muốn sử dụng phần vẽ hiển thị đồ thị của bạn nhưng lại mắc ở khâu đầu vào. Bạn cho thể giải thích cho mình cấu trúc dữ liệu đầu vào trước khi hiển thị được ko? thk u!

    Trả lời
  5. vang, ý em là khi mình kéo các node với khoảng các của chúng ra giao diện ,rùi thì làm sao để tên node và giá tri nhập vào qua class Node để minh tính toán đường đi ngắn nhất cho chúng

    Trả lời
  6. Yin Yang à! Bạn có thể viết code này trên WEB dạng đơn giản:
    mình có 2 bảng lưu Node và Link.
    sau đó vẽ sơ đồ này trên WEB. Và có các sự kiện (click, drag ..) trên sơ đồ này.
    Bạn có thể hướng dẫn hoặc cho mình từ khóa để mình tìm kiếm cái mã nguồn được ko?

    Trả lời
  7. Yin Yang à! Bạn có thể viết code này trên WEB dạng đơn giản:
    mình có 2 bảng lưu Node và Link.
    sau đó vẽ sơ đồ này trên WEB. Và có các sự kiện (click, drag ..) trên sơ đồ này.
    Bạn có thể hướng dẫn hoặc cho mình từ khóa để mình tìm kiếm cái mã nguồn được ko??

    Trả lời
  8. mình mở bằng VS2012 thì gặp 2 lỗi thế này.. bạn có thể chỉ mình cách sửa được không
    Message 1 Could not find type ‘Y2VisualGraph.GraphUI’. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built using settings for your current platform or Any CPU. 0 0

    Message 2 The variable ‘graphUI1’ is either undeclared or was never assigned. E:\Downloads\Video\dothi\Y2VisualGraph 1.3.3\Y2VisualGraph\Form1.Designer.cs 300 0

    Trả lời

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s