-
26-11-2010, 11:38 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Vẽ đường thẳng có màu bằng chuột và tô màu (C++ sử dụng MFC).
40px
Mã nguồn PHP:void CLine::Draw(CDC *pDC){ CPen pPen(PS_SOLID, 1, m_crColor); CPen *pOldPen = pDC->SelectObject(&pPen); pDC->MoveTo(m_ptFrom); pDC->LineTo(m_ptTo); pDC->SelectObject(pOldPen);}
Mã nguồn PHP:void CLine::DrawLine(CDC *pDC){ int nOldMode = pDC->SetROP2(R2_NOTXORPEN); Draw(pDC); pDC->SetROP2(nOldMode);}
Mã nguồn PHP:void CBaiLamView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); CBaiLamDoc *pDoc = GetDocument(); if ((nFlags & MK_LBUTTON) == MK_LBUTTON) { pDoc->m_Line.DrawLine(&dc); pDoc->m_Line.m_ptTo = point; pDoc->m_Line.DrawLine(&dc); }}
View more random threads:
- Dùng hàm api nào để tìm kiếm file trên window
- MIME không dùng STARTTLS Gửi File Unicode ?
- Lệnh PORT của FTP trong VC++ xử lý thế nào?
- Hook TerminateProcess nhưng khi kill các tiến trình khác ngoài tiến trình mình định sẵn thì bị crash?
- Dùng hook làm auto clicker???
- Check class của 1 soft
- Hàm API nào để điều khiển webcam?
- Làm sao để click chuột được vào game đã trận các hàm API click mouse
- Lỗi khi thay đổ kích thước cửa sổ!
- So sánh kiểu dữ liệu trong C Native và VC++ khi lập trình APIs
-
27-11-2010, 05:14 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình nghĩ bạn nên tạo 1 Pen , sau đó set màu cho Pen đó đó rồi Select vào hDC
-
27-11-2010, 05:28 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gianghoplus
-
12-12-2010, 12:55 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Vấn đề thứ 2 của bạn, rõ ràng nếu dùng thuật toán loang để tô màu thì sẽ ko được vì loang căn cứ vào màu của biên để xác định vùng cần tô.
Trường hợp màu biên trùng với màu tô, theo mình hiểu, thì ta phải hoàn toàn nắm được cấu trúc hình vẽ bạn đang thao tác. Điều này chắc chắc phải được vì người dùng chỉ có thể vẽ những gì mà bạn cung cấp cho họ vẽ, và bạn chắc chắn phải có thông tin đầy đủ về hình vẽ nếu còn muốn vẽ lại. Chẳng hạn với đa giác, ta có nhiều thuật toán để tô màu với đa giác, khi ta đã biết được tập hợp các điểm nằm tạo thành đa giác đó. Vấn đề là xác định điểm người dùng nhấp chuột có nằm trong đa giác hay không thì ta có thể dùng định lý nửa đường thẳng của jordan, định lý tổng các góc. Đó là về lý thuyết kĩ thuật đồ họa.
Còn có thể bạn lại muốn áp dụng luôn các thuật toán có sẵn trong thư viện GDI/GDI+ để vẽ thì ta chỉ việc sử dụng Path. Trong Path có rất nhiều phương thức để bạn thêm đường thẳng, đường tròn, đa giác và xác định xem 1 điểm bất kì có nằm trong đa giác hay không.
Trong MFC, đầu tiên ta tạo Path bằng BeginPath. Sau đó bạn thêm các hình tùy thích vào trong path. Kết thúc sẽ bằng EndPath
Rồi dùng CRgn:CreateFromPath để tạo ra region từ path. Kế đến dùng phương thức PtInRegion của lớp CRgn xem liệu một điểm bất kì có nằm trong region hay không.
Ngoại trừ một số ít trường hợp rãnh mũi - má và “râu rồng silicon” xuất hiện sớm, có khi từ tuổi thanh niên do cơ địa, còn lại, đại đa số do căn do lão hoá đã gây nên ba diễn biến: Giảm mô xương gò...
Cách thẩm mỹ má ở tuổi trung niên...