找回密码
 加入
搜索
查看: 3359|回复: 9

类似桌面粉笔那种软件的笔迹显示的原理是什么

  [复制链接]
发表于 2009-9-13 18:39:15 | 显示全部楼层 |阅读模式
类似桌面粉笔那种软件的笔迹显示的原理是什么?就是直接在屏幕上显示出来颜色。
多谢各位帮忙解疑的领导。。
发表于 2010-5-7 14:44:18 | 显示全部楼层
学习中,,,,
发表于 2010-5-7 14:57:40 | 显示全部楼层
关注中
发表于 2010-5-7 15:13:02 | 显示全部楼层
我也想知道啊...
发表于 2010-5-8 16:46:30 | 显示全部楼层
如此?

关键思路部分代码:
Func myup()
$click = True
EndFunc ;==>myup
Func mydown()
If $click = True Then
$click = False
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
For $i = 1 To 20
$xy1 = MouseGetPos()
Sleep(100)
$xy2 = MouseGetPos()
$hPen = _GDIPlus_PenCreate(0xFFee0000, 8)
_GDIPlus_PenSetWidth($hPen, 8)
_GDIPlus_GraphicsDrawLine($hGraphic, $xy1[0], $xy1[1], $xy2[0], $xy2[1], $hPen)
Next
Else
$click = True
EndIf
EndFunc ;==>mydown

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-5-8 16:48:10 | 显示全部楼层
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 m_ptOrigin=m_ptOld=point;
 m_bDraw=TRUE;
 CView::OnLButtonDown(nFlags, point);
}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 /*HDC hdc;
 hdc=::GetDC(m_hWnd);
 MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
 LineTo(hdc,point.x,point.y);
 ::ReleaseDC(m_hWnd,hdc);*/
 /*CDC *pDC=GetDC();
 pDC->MoveTo(m_ptOrigin);
 pDC->LineTo(point);
 ReleaseDC(pDC);*/

 //CClientDC dc(this);
 /*CClientDC dc(GetParent());
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);*/

 //CWindowDC dc(this);
 //CWindowDC dc(GetParent());
 /*CWindowDC dc(GetDesktopWindow());
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);*/
 /*CPen pen(PS_DOT,1,RGB(0,255,0));
 CClientDC dc(this);
 CPen *pOldPen=dc.SelectObject(&pen);
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);
 dc.SelectObject(pOldPen);*/
// CBrush brush(RGB(255,0,0));

 /*CBitmap bitmap;
 bitmap.LoadBitmap(IDB_BITMAP1);
 CBrush brush(&bitmap);*/
 /*CClientDC dc(this);
 //dc.FillRect(CRect(m_ptOrigin,point),&brush);
 CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
 CBrush *pOldBrush=dc.SelectObject(pBrush);
 dc.Rectangle(CRect(m_ptOrigin,point));
 dc.SelectObject(pOldBrush);*/
 m_bDraw=FALSE;
 CView::OnLButtonUp(nFlags, point);
}

void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
 CClientDC dc(this);
 CPen pen(PS_SOLID,1,RGB(255,0,0));
 CPen *pOldPen=dc.SelectObject(&pen);
 if(m_bDraw==TRUE)
 {
  dc.SetROP2(R2_BLACK);
  dc.MoveTo(m_ptOrigin);
  //dc.LineTo(point);
  dc.LineTo(m_ptOld);
  //dc.MoveTo(m_ptOrigin);
  dc.MoveTo(m_ptOld);
  dc.LineTo(point);
  //m_ptOrigin=point;
  m_ptOld=point;
 }
 dc.SelectObject(pOldPen);
 CView::OnMouseMove(nFlags, point);
}
此乃VC版电子粉笔代码,借鉴下(网络所获,与本人无关)
发表于 2010-5-8 18:20:19 | 显示全部楼层
学习了 学习  

要学的东西太多了
发表于 2010-5-9 00:11:58 | 显示全部楼层
应该是gdi里笔形的事情
发表于 2010-5-9 00:12:02 | 显示全部楼层
应该是gdi里笔形的事情
发表于 2010-5-9 06:56:47 | 显示全部楼层
是这样的意思,就是效果不怎么好啊.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 07:28 , Processed in 0.081109 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表