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

Đề tài: [Hỏi] Cách tạo giao diện trong c++.

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    0

    Wink [Hỏi] Cách tạo giao diện trong c++.

    Em là newbie đang làm một chương trình muốn thiết kế cái giao diện nhưng tìm trên google ,monava,yahoo... mà không thấy. Huynh nào có ebook hay một giáo trình nào thì cho em xin 1 cái.Nếu huynh nào biết hướng dẫn em một cái lun.


    Lưu ý đọc Nội quy của diễn đàn nhé!
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 27-01-2008 lúc 01:18 AM. Lý do: Nhắc nhở vi phạm Nội quy

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

    Bạn muốn làm nó trong đâu ? Borland C++ hả ? Mình gợi ý cho bạn cách tạo giao diện tức là sử dụng những hàm đồ hoạ trong c/c++ để vẽ ra giao diện 1 chương trình . Ví dụ bạn muốn giả lập 1 cửa sổ window . Bạn cần tạo 1 thanh status , 3 nút bấm max , min , exit .
    Bạn tham khảo code sau để lấy ý tưởng nhé :
    Code:
    class GUI //xây dựng lớp nút bấm và nút cửa sổ
    {
    
    public:
    void button(int x1, int y1, int x2, int y2, int press=0)
    {
          //ham nay dung de ve 1 nut bam hinh chu nhat 
    	if(press)
    	{
    		line_dda(x1,y1,x2,y1,0);
    		line_dda(x1,y1,x1,y2,0);
    		line_dda(x1,y2,x2,y2,15);
    		line_dda(x2,y1,x2,y2,15);
    	}
    	else
    	{
    		line_dda(x1,y1,x2,y1,15);
    		line_dda(x1,y1,x1,y2,15);
    		line_dda(x1,y2,x2,y2,0);
    		line_dda(x2,y1,x2,y2,0);
    	}
    
    }
    
    void window(int x1, int y1, int x2, int y2) // cua so window
    {
    	button(x1,y1,x2,y2);
    	fill_rectangle(x1+1, y1+1, x2-2, y1+15, 1);  //to mau cho thanh window
    
    	button(x2-14,y1+2,x2-2,y1+14);
    	fill_rectangle(x2-13, y1+3, x2-3, y1+13, 7); //CLOSE
    	line_dda(x2-13,y1+4,x2-4,y1+12,BLACK);
    	line_dda(x2-12,y1+4,x2-3,y1+12,BLACK);
    	line_dda(x2-4,y1+4,x2-13,y1+12,BLACK);
    	line_dda(x2-3,y1+4,x2-12,y1+12,BLACK);
    
    	button(x2-28,y1+2,x2-16,y1+14);
    	fill_rectangle(x2-27, y1+3, x2-17, y1+13, 7); //MAXIMIZE
    	rectangle(x2-27,y1+4,x2-18,y1+12,BLACK);
    	line_dda(x2-26,y1+5,x2-19,y1+5,BLACK);
    
    	button(x2-42,y1+2,x2-30,y1+14);
    	fill_rectangle(x2-41, y1+3, x2-31, y1+13, 7); //MINIMIZE
    	line_dda(x2-39,y1+10,x2-34,y1+10,BLACK);
    	line_dda(x2-39,y1+11,x2-34,y1+11,BLACK);
    
    }
    Muốn chạy xem thử bạn cần set mode 13 ( dùng ngắt 10 ) . Thân .

  3. #3
    Ngày gia nhập
    12 2006
    Bài viết
    72

    Nói về thiết kế giao diện quả là vô vàn vì phải tùy theo chương trình của bạn dùng để làm gì để có thể đưa ra một giao diện hiệu quả nhưng quan trọng hơn cả là bạn cần biết được các thuộc tính và phương thức của mỗi đối tượng đồ họa mà trình biên dịch cung cấp.

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Này thế bài này gồm những thư viện nào thế. Tớ chạy nó báo lỗi không tìm thấy line_dda, fill_rectangle và rectangle.

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Trích dẫn Nguyên bản được gửi bởi iamvtn Xem bài viết
    Này thế bài này gồm những thư viện nào thế. Tớ chạy nó báo lỗi không tìm thấy line_dda, fill_rectangle và rectangle.
    Vâng , đúng rồi , đây chỉ là gợi ý của em mà thôi ^^ . Muốn biết nó ra cái hình thù gì thì phải xây dựng thêm 3 hàm con line_dda , fill rectangle và rectangle . Hàm line_dda ý muốn vẽ 1 đường thẳng có màu theo thuật toán dda . Hàm fill rectangle vẻ 1 hình chữ nhật có tô màu . Hàm rectangle vẽ 1 hình chữ nhật với màu vẽ tự chọn . Nếu anh muốn chạy tốt thì thêm vào đây mấy cái này nhe .

    Code:
    void plot_pixel(int x,int y, int color)
    {
    	REGS r;
    
    	r.h.ah=0x0c; //ghi cham sang ra man hinh
    	r.h.al=color; //so hieu cua mau
    	r.x.cx=x;  //toa do cot
    	r.x.dx=y;  //toa do hang
    	r.h.bh=0;  //so hieu trang man hinh
    
    	int86(0x10, &r, &r);
    }
    Code:
    int round(float f)
    {
    	return (f+0.5);  //lam tron so thuc (<0,5->0;>0.5->1)
    }
    Code:
    void line_dda(int x1, int y1, int x2, int y2, int color)
    {
    	if (x1==x2 && y1==y2)
    	{plot_pixel(x1,y1,color); return;}
    	int i,loop;
    	float x_inc, y_inc,x,y,dx,dy;
    
    	dx=x2-x1;
    	dy=y2-y1;
    
    	if( abs(dy)<=abs(dx) )	loop=abs(dx);
    	else	  loop=abs(dy);
    
    	x_inc=(float)dx/loop;
    	y_inc=(float)dy/loop;
    
    	x=x1;	y=y1;
    	plot_pixel( round(x), round(y), color );
    
    	for(i=1; i<=loop; i++)
    	{
    		x+=x_inc;
    		y+=y_inc;
    		plot_pixel( round(x), round(y), color );
    	}
    }
    Code:
    void rectangle(int x1, int y1, int x2, int y2, int color)
    {
    	line_dda(x1,y1,x2,y1,color);
    	line_dda(x1,y1,x1,y2,color);
    	line_dda(x1,y2,x2,y2,color);
    	line_dda(x2,y1,x2,y2,color);
    }
    Code:
    void fill_rectangle(int x1, int y1, int x2, int y2, int color)
    {
    	for(int i=x1; i<=x2; i++)
    		line_dda(i,y1,i,y2,color);
    }
    Rắc rối vậy chứ thực ra cái này chỉ giả lập thanh cửa sổ trong môi trường DOS thôi , xấu òm àh ^^ . Mấy cái này cũ xưa nhưng mà em nghiên cứu cũng khá kỹ lắm . Ko bít để làm gì ...

  6. #6
    Ngày gia nhập
    06 2011
    Nơi ở
    py
    Bài viết
    2

    Mặc định [Hỏi] Cách tạo giao diện trong c++.

    Em đang viết giao diện cho bài tập viết bằng Borland C, 1 cửa sổ window có hai nút: vào chương trình, Thoát. Em đang cần gấp mà làm chưa được. Tiền bối nào giúp em với. Em xin cảm ơn nhiều!
    tukut3

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

  1. Giải Thích Về Phương Thức windowClosing() trong Giao Diện WindowListener
    Gửi bởi toilatoi1992 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 2
    Bài viết cuối: 06-10-2013, 07:18 PM
  2. Trả lời: 0
    Bài viết cuối: 04-11-2011, 03:38 PM
  3. Xóa file trong win ! Nan giải quá , nghĩ cả ngày nay chưa giải quyết được.
    Gửi bởi megaboyvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-10-2009, 02:21 AM
  4. Hàm trong C++ không nằm trong main vẫn chạy đúng. Giải thích giúp?
    Gửi bởi tuvan1011 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 02-09-2009, 12:58 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