求毛笔代码,实现毛笔书写效果?

YoungestCPSprogramer 2012-06-30 08:58:36
我在电子白板中想加入毛笔效果,请问大家如何开发的,我是用vc++开发的,请大家给点思路?最好有例子代码
...全文
623 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿茶加咖啡 2015-01-23
  • 打赏
  • 举报
回复
老兄,自摸不能这样搞!!!大家都明白,俺无聊,给你一板砖!
  • 打赏
  • 举报
回复
之前我从网上下了一段代码,发现不行,后来又因为贪便宜,从湖南某人那买了一份毛笔代码,发现根本不能用,不能用的原因如下:
1 背景绘图是通过一个char* pbuffer进行操作,比如你要将一行显示为红色,或者画一个圆,你必须每一个点都进行遍历填充
2 老版本画快了,会很细,大概只有1个像素,显然不行,如果是用触摸屏的画,触摸屏本来响应速度就慢,完全没法使用。
3 老版本没有宽度整体调节和部分……


记住湖南某人靠低价卖代码, 版本很老的 有很多缺陷,请慎重考虑,我吃过亏!,记住了正版询问18971612286
POWERSOUND1 2012-07-30
  • 打赏
  • 举报
回复


[Quote=引用 5 楼 的回复:]
之前我从网上下了一段代码,发现不行,后来又因为贪便宜,从湖南某人那买了一份毛笔代码,发现根本不能用,不能用的原因如下:
1 背景绘图是通过一个char* pbuffer进行操作,比如你要将一行显示为红色,或者画一个圆,你必须每一个点都进行遍历填充
2 老版本画快了,会很细,大概只有1个像素,显然不行,如果是用触摸屏的画,触摸屏本来响应速度就慢,完全没法使用。
3 老版本没有宽度整体调节和部分……
[/Quote]

他在我手上买了一套软件到处分发.还是误导人.
  • 打赏
  • 举报
回复
要是能封装成dll就完美了
如何将毛笔功能添加到你的代码中
在你窗口类的头文件中声明
................................................. .h ...............................................

CDC m_MemDC;//用于绘制画笔的背景,可以填充背景色或者背景图

CMyPen m_myPen; //主要类成员,笔的算法类
................................................cpp ............................................................
1初始化
在创建窗口下,如果是MFC程序,一般在 OnInitDlg 对话框 或者OnInitialUpdate 文档应用类下

m_MemDC.CreateCompatibleDC(GetDC());
m_myPen.SetDibTarget(&m_MemDC, m_nWidth, m_nHeight);//设置你笔绘画的有效区的宽度和高度
m_myPen.SetPenType(CMyPen::PT_MAOBI);//设置笔的类型 这里是毛笔,还有画笔,荧光笔,水笔
m_myPen.SetWidth(9);//指定笔的宽度
m_myPen.SetBGColor(RGB(240,240,240));//用与指定背景色,也可以指定背景图
// m_myPen.SetBkImageFromWnd(lpszPath);//指定背景图
m_myPen.SetColor(RGB(0,0,0));// 用于指定笔的颜色
m_myPen.Clear();//擦除并刷新

2 响应OnPait或者OnDraw


void CXXXXView::OnDraw(CDC* pDC)
{
CDrawProDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

pDC->BitBlt(0,0, m_nWidth, m_nHeight, &m_MemDC, 0, 0, SRCCOPY);//需要添加此句
}
3 响应OnMouse
在OnLButtonDown(UINT nFlags, CPoint point)下加入
m_myPen.PushStart(point);//添加一笔的起始点
OnLButtonUp(UINT nFlags, CPoint point)
m_myPen.PushEnd(point);//添加一笔的结束点
OnMouseMove(UINT nFlags, CPoint point)

if( (nFlags&MK_LBUTTON))//如果鼠标按下且移动
{
m_myPen.Push(point);//添加中间点
InvalidateRect(rect .FALSE);//刷新区域
}

4 如何擦除所绘制的痕迹
m_myPen.Clear();
Invalidate(FALSE);

按照上述4步,你购买了代码就很实现毛笔功能了哦!于此同时,还有另外3种笔,你将m_myPen.SetPenType(CMyPen::PT_MAOBI)改改就行了哦!

更详细及原始代码出处请点击 http://www.cppblog.com/yefuhai/archive/2012/06/27/180492.html
VC++Demo及源代码下载 :http://www.cppblog.com/Files/yefuhai/Brush.rar
  • 打赏
  • 举报
回复
谢谢你了!效果还不错
cppsprogramer 2012-06-30
  • 打赏
  • 举报
回复
如何将毛笔功能添加到你的代码中
在你窗口类的头文件中声明
................................................. .h ...............................................

CDC m_MemDC;//用于绘制画笔的背景,可以填充背景色或者背景图

CMyPen m_myPen; //主要类成员,笔的算法类
................................................cpp ............................................................
1初始化
在创建窗口下,如果是MFC程序,一般在 OnInitDlg 对话框 或者OnInitialUpdate 文档应用类下

m_MemDC.CreateCompatibleDC(GetDC());
m_myPen.SetDibTarget(&m_MemDC, m_nWidth, m_nHeight);//设置你笔绘画的有效区的宽度和高度
m_myPen.SetPenType(CMyPen::PT_MAOBI);//设置笔的类型 这里是毛笔,还有画笔,荧光笔,水笔
m_myPen.SetWidth(9);//指定笔的宽度
m_myPen.SetBGColor(RGB(240,240,240));//用与指定背景色,也可以指定背景图
// m_myPen.SetBkImageFromWnd(lpszPath);//指定背景图
m_myPen.SetColor(RGB(0,0,0));// 用于指定笔的颜色
m_myPen.Clear();//擦除并刷新

2 响应OnPait或者OnDraw


void CXXXXView::OnDraw(CDC* pDC)
{
CDrawProDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

pDC->BitBlt(0,0, m_nWidth, m_nHeight, &m_MemDC, 0, 0, SRCCOPY);//需要添加此句
}
3 响应OnMouse
在OnLButtonDown(UINT nFlags, CPoint point)下加入
m_myPen.PushStart(point);//添加一笔的起始点
OnLButtonUp(UINT nFlags, CPoint point)
m_myPen.PushEnd(point);//添加一笔的结束点
OnMouseMove(UINT nFlags, CPoint point)

if( (nFlags&MK_LBUTTON))//如果鼠标按下且移动
{
m_myPen.Push(point);//添加中间点
InvalidateRect(rect .FALSE);//刷新区域
}

4 如何擦除所绘制的痕迹
m_myPen.Clear();
Invalidate(FALSE);

按照上述4步,你购买了代码就很实现毛笔功能了哦!于此同时,还有另外3种笔,你将m_myPen.SetPenType(CMyPen::PT_MAOBI)改改就行了哦!

更详细及原始代码出处请点击 http://www.cppblog.com/yefuhai/archive/2012/06/27/180492.html
VC++Demo及源代码下载 :http://www.cppblog.com/Files/yefuhai/Brush.rar

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧