-
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:
- InjectDLL Sử Dụng SetWindowHook Hook KeyBoard
- vẻ hình chử nhật trong Win32Api ?
- Mouse hook system-wide lại chạy như local hook ???
- Dùng hook làm auto clicker???
- Cấp phát memory ở 1 tiến trình khác như thế nào
- Đối số thứ 3 của hàm SetWindowHookEx (HINSTANCE hMod) nghĩa là gì?
- Cách tìm Handle của của sổ Confirm Save As?
- Viết COM Bằng VC++ ATL có Tối ưu nhất ?
- convert một mảng sang LPCWSTR trong API
- RegSetValueExA chạy sai với kiểu REG_DWORD
-
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.
Dưới ánh nắng mặt trời đang lên, những đống pallet nhựa An Giang trải dài mênh mông như những bức tranh tự nhiên đầy sắc màu. Mỗi chiếc pallet nhựa không chỉ là một vật dụng thông thường mà còn là...
Pallet nhựa An Giang giao hàng...