void CNotifyWindow::OnPaint(HDC dc) { CPaintDC pdc = CPaintDC(m_hWnd); CMemDC mc = CMemDC(pdc.m_hDC); m_Image->Draw(mc.m_hDC, 0, 0); RECT rc = {50,10,m_Image->GetWidth(), m_Image->GetHeight()}; HGDIOBJ font = ::SelectObject(mc.m_hDC, m_SubjectFont); ::SetBkMode(mc.m_hDC, TRANSPARENT); ::DrawText(mc.m_hDC, m_Subject->Ptr(), m_Subject->Len(), &rc, DT_CENTER); rc.top += 20; ::SelectObject(mc.m_hDC, m_TextFont); ::DrawText(mc.m_hDC, m_Subtext->Ptr(), m_Subtext->Len(), &rc, DT_CENTER); rc.top += 20; rc.left -= 30; ::DrawText(mc.m_hDC, m_Text->Ptr(), m_Text->Len(), &rc, DT_CENTER); // rc.left -= 30; ::SelectObject(mc.m_hDC, font); ::BitBlt(pdc.m_hDC, 0, 0, m_Image->GetWidth(), m_Image->GetHeight(), mc.m_hDC, 0, 0, SRCCOPY); }
void CCxImageCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) { switch (GetState()) { case CCxImageCtrl::IS_TextMove: if (m_pTextComment != NULL) { CTextCommentSettings settingsDlg(this); settingsDlg.m_fontColor = m_TextColor; settingsDlg.m_fontSize = m_TextSize; settingsDlg.m_fontName = m_FontName; settingsDlg.SetCommentText(m_pTextComment->GetText()); settingsDlg.SetFont(m_pTextComment->GetFont()); settingsDlg.SetColor(m_pTextComment->GetColor()); if(settingsDlg.DoModal()==IDOK) { m_TextColor = settingsDlg.m_fontColor; m_TextSize = settingsDlg.m_fontSize; m_FontName = settingsDlg.m_fontName; m_pTextComment->SetColor(m_TextColor); m_pTextComment->SetText(settingsDlg.GetCommentText()); m_pTextComment->SetFont(settingsDlg.m_Font, GetDC()); m_hImage.Copy(m_hImageBuffer); m_pTextComment->DrawText(m_hImage, CPaintDC(GetDesktopWindow())); Invalidate(FALSE); } } break; } CWnd::OnLButtonDblClk(nFlags, point); }
void CCxImageCtrl::OnMouseMove(UINT nFlags, CPoint point) { CPoint imagePoint(point); ClientToImage(imagePoint); CRect clientRect; GetClientRect(&clientRect); if(m_hImage.IsInside(imagePoint.x,imagePoint.y) || (GetState()==CCxImageCtrl::IS_TextMove && m_bCaptureWasSet)) { switch(GetState()) { case CCxImageCtrl::IS_Move: if(m_bCaptureWasSet) { SCROLLINFO si = {0}; if(m_dwWidth>clientRect.Width()) { GetScrollInfo(SB_HORZ,&si); m_nHScrollPos = m_RefScroll.cx - point.x + m_RefPoint.x; if(m_nHScrollPos<si.nMin) m_nHScrollPos = si.nMin; if(m_nHScrollPos>si.nMax) m_nHScrollPos = si.nMax; SetScrollPos(SB_HORZ,m_RefScroll.cx - point.x + m_RefPoint.x); Invalidate(FALSE); } if(m_dwHeight>clientRect.Height()) { GetScrollInfo(SB_VERT,&si); m_nVScrollPos = m_RefScroll.cy - point.y + m_RefPoint.y; if(m_nVScrollPos<si.nMin) m_nVScrollPos = si.nMin; if(m_nVScrollPos>si.nMax) m_nVScrollPos = si.nMax; SetScrollPos(SB_VERT,m_RefScroll.cy - point.y + m_RefPoint.y); Invalidate(FALSE); } } break; case CCxImageCtrl::IS_Crop: if(m_bCaptureWasSet) { m_CropActivePoint = point; ClientToImage(m_CropActivePoint); ImageToClient(m_CropActivePoint); Invalidate(FALSE); } break; case CCxImageCtrl::IS_TextMove: if (m_pTextComment != NULL) { if (!m_bCaptureWasSet) { if (!m_pTextComment->GetRectangle().PtInRect(imagePoint)) { SetState(IS_Text); SetCursor(AfxGetApp()->LoadCursor(IDC_TEXTCURSOR)); } } else { m_RefPoint = imagePoint; m_RefPoint.Offset(m_RefOffset); m_hImage.Copy(m_hImageBuffer); m_pTextComment->SetPosition(m_RefPoint, GetDC()); m_pTextComment->DrawText(m_hImage, CPaintDC(GetDesktopWindow())); Invalidate(false); } } break; case CCxImageCtrl::IS_Text: if (m_pTextComment != NULL) { if (m_pTextComment->GetRectangle().PtInRect(imagePoint)) { SetState(IS_TextMove); SetCursor(AfxGetApp()->LoadCursor(IDC_HANDCATCHCURSOR2)); Invalidate(false); } } break; case CCxImageCtrl::IS_Pen: { // Draw Line if(m_bCaptureWasSet) { CPoint fromPoint(m_RefPoint), toPoint(point); ClientToImage(fromPoint); ClientToImage(toPoint); m_hImage.DrawLine(fromPoint.x, toPoint.x, m_hImage.GetHeight()-fromPoint.y,m_hImage.GetHeight()-toPoint.y,GetPenColor()); //and remember new position [4/7/2004] m_RefScroll = CSize(m_nHScrollPos,m_nVScrollPos); m_RefPoint = point; Invalidate(FALSE); } } break; } } CWnd::OnMouseMove(nFlags, point); }
void CCxImageCtrl::OnLButtonDown(UINT nFlags, CPoint point) { CPoint imagePoint(point); ClientToImage(imagePoint); CRect clientRect; GetClientRect(&clientRect); if(m_hImage.IsInside(imagePoint.x,imagePoint.y)) { switch(GetState()) { case CCxImageCtrl::IS_Move: if (m_pTextComment) { delete m_pTextComment; m_pTextComment = NULL; } SetCapture(); m_bCaptureWasSet = TRUE; SetCursor(AfxGetApp()->LoadCursor(IDC_HANDCATCHCURSOR2)); m_RefScroll = CSize(m_nHScrollPos,m_nVScrollPos); m_RefPoint = point; break; case CCxImageCtrl::IS_Crop: if (m_pTextComment) { delete m_pTextComment; m_pTextComment = NULL; } SetCapture(); m_bCaptureWasSet = TRUE; SetCursor(AfxGetApp()->LoadCursor(IDC_SELECTCURSOR)); m_RefScroll = CSize(m_nHScrollPos,m_nVScrollPos); m_RefPoint = point; ClientToImage(m_RefPoint); ImageToClient(m_RefPoint); break; case CCxImageCtrl::IS_Pen: if (m_pTextComment) { delete m_pTextComment; m_pTextComment = NULL; } SaveImageToUndo(); SetCapture(); m_bCaptureWasSet = TRUE; SetCursor(AfxGetApp()->LoadCursor(IDC_PENCURSOR)); m_RefScroll = CSize(m_nHScrollPos,m_nVScrollPos); m_RefPoint = point; break; case IS_TextMove: SetCapture(); m_RefOffset= m_pTextComment->GetPosition() - imagePoint; m_bCaptureWasSet = TRUE; break; case CCxImageCtrl::IS_Text: SaveImageToUndo(); SetCapture(); m_bCaptureWasSet = TRUE; SetCursor(AfxGetApp()->LoadCursor(IDC_TEXTCURSOR)); m_RefScroll = CSize(m_nHScrollPos, m_nVScrollPos); m_RefPoint = imagePoint; CTextCommentSettings settingsDlg(this); settingsDlg.m_fontColor = m_TextColor; settingsDlg.m_fontSize = m_TextSize; settingsDlg.m_fontName = m_FontName; if(settingsDlg.DoModal()==IDOK) { m_TextColor = settingsDlg.m_fontColor; m_TextSize = settingsDlg.m_fontSize; m_FontName = settingsDlg.m_fontName; if (m_pTextComment) { delete m_pTextComment; m_pTextComment = NULL; } m_pTextComment = new CTextComment(m_RefPoint); m_pTextComment->SetColor(settingsDlg.m_fontColor); m_pTextComment->SetText(settingsDlg.GetCommentText()); m_pTextComment->SetFont(settingsDlg.m_Font, GetDC()); m_hImageBuffer.Copy(m_hImage); m_pTextComment->DrawText(m_hImage, CPaintDC(GetDesktopWindow())); Invalidate(FALSE); } break; } } CWnd::OnLButtonDown(nFlags, point); }
void SourceWindow::OnPaint() { Draw(CPaintDC(this)); }