如何实现毛笔功能?

YoungestCPSprogramer 2012-07-09 11:13:01
我在触摸屏上,想书写有毛笔效果,最好是c++或者c#实现
...全文
535 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ77211022 2013-11-23
  • 打赏
  • 举报
回复
七月墨晴 2013-10-25
  • 打赏
  • 举报
回复
毛笔字 效果 QQ476172918
cppsprogramer 2012-07-09
  • 打赏
  • 举报
回复
再次谢谢楼主你了,希望大家不要贪便宜,像我一样吃亏,我想大家都是程序员把,跟老板做事,万一买了代码集成不上,那不是被老板骂死,还不如多几百块,买个放心!
cppsprogramer 2012-07-09
  • 打赏
  • 举报
回复
之前我从网上下了一段代码,发现不行,后来又因为贪便宜,从湖南某人那买了一份毛笔代码,发现根本不能用,不能用的原因如下:
1 背景绘图是通过一个char* pbuffer进行操作,比如你要将一行显示为红色,或者画一个圆,你必须每一个点都进行遍历填充
2 老版本画快了,会很细,大概只有1个像素,显然不行,如果是用触摸屏的画,触摸屏本来响应速度就慢,完全没法使用。
3 老版本没有宽度整体调节和部分调节接口
4 老版本在很多机器上会响应不过来,程序员朋友你一直到,需要响应onmove消息,onmove消息是很频繁的,老版本没有进行优化处理,尤其是你机器又慢又是全屏书写的时候就更加明显了。
都怪自己贪便宜,后来才知道那个家伙原来是盗卖楼主你老版本的代码呀,买了楼主你的代码,发现问题全部解决了,谢谢楼主,楼主的支付办法也好通过支付宝,服务也好,让买家放心!
  • 打赏
  • 举报
回复
采用C++编写的纯算法,底层封装了CMyPen类,含有4种笔,分别是毛笔,画笔,荧光笔,水笔.
非常容易调用,只用响应鼠标消息,将点加入进去即可。
纯粹底层算法,兼容windows xp,windows vista ,windows7 ,也很容易向其他语言移植,例如C#,.net,java,易语言等
VC++Demo及源代码下载 :http://www.cppblog.com/Files/yefuhai/Brush.rar
技术原帖及相应资料 : http://www.cppblog.com/yefuhai/archive/2012/06/27/180492.html

如何将毛笔功能添加到你的代码中
在你窗口类的头文件中声明
................................................. .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)改改就行了哦!
出售毛笔算法 前十名顾客低价200元,采用C++编写的纯算法,底层封装了CMyPen类,含有4种笔,分别是毛笔,画笔,荧光笔,水笔. 非常容易调用,只用响应鼠标消息,将点加入进去即可。 纯粹底层算法,兼容windows xp,windows vista ,windows7 ,也很容易向其他语言移植,例如C#,.net,java,易语言等 联系方式 跃天 Tel 18674059458 QQ 1906733710 E-Mail 1906733710@qq.com 同时销售下面店铺中的 电子签到源码:前5名顾客800元 电子白板源码:前10名顾客600元 遇到就是赚到 如不要源码,购买软件均300元 淘宝链接 :http://item.taobao.com/item.htm?id=15205465505 如何将毛笔功能添加到你的代码中 在你窗口类的头文件中声明 ................................................. .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)改改就行了哦!

19,468

社区成员

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

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