Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
void SourceWindow::OnPaint()
{
  Draw(CPaintDC(this));
}