User Tag List

+ Trả lời chủ đề
Hiện kết quả từ 1 tới 3 của 3

Chủ đề: Rắc rối với câu lệnh MoveTo() và LineTo() :(

  1. #1
    Điều hành viên Avatar của hunterXhunter_1990
    Tham gia ngày
    Dec 2009
    Bài gửi
    482

    Mặc định Rắc rối với câu lệnh MoveTo() và LineTo() :(

    Mình đang viết 1 cái giao diện nhận dữ liệu từ cổng COM vẽ thành 1 cái đồ thị bằng visual C++6.0.
    Phần vẽ đồ thị mình dùng cặp MoveTo(x0,y0) với LineTo(X1,Y1) nhưng lúc vẽ nó toàn vẽ từ điểm (0,0) đến điểm (X1,Y1) thôi hà. Bạn nào biết sửa thế nào chỉ cho mình với. Mình thanks trước
    Mã:
    void CDoAnDlg::VeDoThi()
    {	//khai bao hop thoai hien tai----------------------------
    	CClientDC dc(this);
    	CRect rect;
    	GetClientRect(&rect);
    	KillTimer(ID_CLOCK_TIME);
    	//-------------------------------------------------------
    	if(Stt>1){
    		CClientDC dc(this);
    	CRect rect;
    	GetClientRect(&rect);
    	KillTimer(ID_CLOCK_TIME);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[Stt-1].GiaTriX,Chuoi_ToaDo[Stt-1].GiaTriY);
    		dc.LineTo(Chuoi_ToaDo[Stt].GiaTriX,Chuoi_ToaDo[Stt].GiaTriY);
    		UpdateData(FALSE);
    	}
    	if(Stt>15){//neu het khong gian thi ve lai do thi cua 5 diem cuoi
    		Chuoi_ToaDo[0].GiaTriX=GocToaDoX;
    		Chuoi_ToaDo[0].GiaTriY=GocToaDoY;
    		Chuoi_ToaDo[0].Minute=Chuoi_ToaDo[11].Minute;
    		Chuoi_ToaDo[0].Second=Chuoi_ToaDo[11].Second;
    		
    		Chuoi_ToaDo[1].GiaTriY=Chuoi_ToaDo[12].GiaTriY;
    		Chuoi_ToaDo[1].GiaTriX=Chuoi_ToaDo[12].GiaTriX-Chuoi_ToaDo[11].GiaTriX+GocToaDoX;
    		Chuoi_ToaDo[1].Minute=Chuoi_ToaDo[12].Minute;
    		Chuoi_ToaDo[1].Second=Chuoi_ToaDo[12].Second;
    				
    		Chuoi_ToaDo[2].GiaTriY=Chuoi_ToaDo[13].GiaTriY;
    		Chuoi_ToaDo[2].GiaTriX=Chuoi_ToaDo[13].GiaTriX-Chuoi_ToaDo[11].GiaTriX+GocToaDoX;
    		Chuoi_ToaDo[2].Minute=Chuoi_ToaDo[13].Minute;
    		Chuoi_ToaDo[2].Second=Chuoi_ToaDo[13].Second;
    
    		Chuoi_ToaDo[3].GiaTriY=Chuoi_ToaDo[14].GiaTriY;
    		Chuoi_ToaDo[3].GiaTriX=Chuoi_ToaDo[14].GiaTriX-Chuoi_ToaDo[11].GiaTriX+GocToaDoX;
    		Chuoi_ToaDo[3].Minute=Chuoi_ToaDo[14].Minute;
    		Chuoi_ToaDo[3].Second=Chuoi_ToaDo[14].Second;
    
    		Chuoi_ToaDo[4].GiaTriY=Chuoi_ToaDo[15].GiaTriY;
    		Chuoi_ToaDo[4].GiaTriX=Chuoi_ToaDo[15].GiaTriX-Chuoi_ToaDo[11].GiaTriX+GocToaDoX;
    		Chuoi_ToaDo[4].Minute=Chuoi_ToaDo[15].Minute;
    		Chuoi_ToaDo[4].Second=Chuoi_ToaDo[15].Second;
    		UpdateData(FALSE);
    		
    		TaoGrid();
    		//khai bao hop thoai hien tai----------------------------
    		CClientDC dc(this);
    		CRect rect;
    		GetClientRect(&rect);
    		KillTimer(ID_CLOCK_TIME);
    		dc.MoveTo(GocToaDoX,GocToaDoY);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[0].GiaTriX,Chuoi_ToaDo[0].GiaTriY);
    		dc.LineTo(Chuoi_ToaDo[1].GiaTriX,Chuoi_ToaDo[1].GiaTriY);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[1].GiaTriX,Chuoi_ToaDo[1].GiaTriY);
    		dc.LineTo(Chuoi_ToaDo[2].GiaTriX,Chuoi_ToaDo[2].GiaTriY);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[2].GiaTriX,Chuoi_ToaDo[2].GiaTriY);
    		dc.LineTo(Chuoi_ToaDo[3].GiaTriX,Chuoi_ToaDo[3].GiaTriY);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[3].GiaTriX,Chuoi_ToaDo[3].GiaTriY);
    		dc.LineTo(Chuoi_ToaDo[4].GiaTriX,Chuoi_ToaDo[4].GiaTriY);
    		UpdateData(FALSE);
    		dc.MoveTo(Chuoi_ToaDo[4].GiaTriX,Chuoi_ToaDo[4].GiaTriY);
    		Stt=5;
    		m_Xasis.Format("%d",GocToaDoX);
    		m_Yasis.Format("%d",Chuoi_ToaDo[0].GiaTriY);
    		m_SttCom.Format("%d",Stt);
    		
    		UpdateData(FALSE);
    		
    	}
    	UpdateData(FALSE);
    	SetTimer(ID_CLOCK_TIME,1000,NULL);
    }
    Đây là kết quả với trường hợp Stt>1 và <15. Còn với trường hợp Stt>15, mình muốn nó vẽ lại 5 điểm cuối rồi tiếp tục nhưng kết quả nó vẽ linh tinh không ra cái gì cả ><
    Ấn vào hình để xem hình to hơn

Tên:	ScreenHunter_02 May. 06 10.58.jpg
Xem:	16
KT :	36,2 KB
ID :	2789
    TODAY is a NEW DAY!!!!

  2. #2
    HUT's Engineer
    Tham gia ngày
    Jun 2011
    Bài gửi
    686

    Mặc định Re: Rắc rối với câu lệnh MoveTo() và LineTo() :(

    hi, lineto tự động gọi moveto sau khi vẽ bạn ạ, do vậy bạn ko cần gọi moveto nữa, nếu muốn vẽ một cái hình thì khuyên bạn dùng hàm vẽ polygon chuẩn đi

  3. #3
    Điều hành viên Avatar của hunterXhunter_1990
    Tham gia ngày
    Dec 2009
    Bài gửi
    482

    Mặc định Re: Rắc rối với câu lệnh MoveTo() và LineTo() :(

    thanks bạn. để mình tìm hiểu thêm xem có được không

    Sau khi dùng hàm polygon thì khả quan hơn nhưng vẫn không thể nào bỏ được đường nối với điểm (0,0). Và trong trường hợp Stt>15 thì nó vẽ linh tinh không có quy luật nào cả
    Ấn vào hình để xem hình to hơn

Tên:	ScreenHunter_02 May. 06 16.47.jpg
Xem:	6
KT :	20,1 KB
ID :	2790
    Lần sửa cuối bởi hunterXhunter_1990; 06-05-2012 lúc 04:49 PM

+ Trả lời chủ đề

Thông tin chủ đề

Users Browsing this Thread

Hiện có 1 người đọc bài này. (0 thành viên và 1 khách)

Từ khóa (Tag) của chủ đề này

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


About svBK.VN

    Bách Khoa Forum - Diễn đàn thảo luận chung của sinh viên ĐH Bách Khoa Hà Nội. Nơi giao lưu giữa sinh viên - cựu sinh viên - giảng viên của trường.

Follow us on

Twitter Facebook youtube