关于GDI+的画笔样式

PepperEggFriedRice 2016-07-19 12:55:59
加精
想使用GDI+作为接口做几个画笔样式测试,找不到相关的资料。
如下图,win下的画图程序,这种粉笔蜡笔的实现可不可以通过gdi+来画出来?

用了纹理画笔,但是画出来的效果是这样的:

无法叠加的画,只是背景是平铺的纹理。显然不行。
有哪位大神做过相关的gdi+ 开发可否给个路子
...全文
2201 94 打赏 收藏 转发到动态 举报
写回复
用AI写文章
94 条回复
切换为时间正序
请发表友善的回复…
发表回复
太上绝情 2016-08-18
  • 打赏
  • 举报
回复
不可能直接用画笔直接画出来,画笔、画刷本质就是往上贴一张图,画笔或画刷决定他的显示的范围的形状。用贴图一旦笔迹有转折那么贴图是不可能跟着一起转方向的,除非是圆形的图。 所以要实现这个效果一般都是先用一般的画笔画出一条普通的线,然后用一些算法对当前笔迹图片的内容做一些处理生成一副最终的效果图,然后立刻把这幅图贴到屏幕上去。不断重复此行为。 具体用什么算法做处理我建议你搜一些论文或者专利。至于你要的效果的第一个样式我觉得可能加一些随机的噪声或者腐蚀也许可以(瞎猜的,不确定)。
PepperEggFriedRice 2016-08-17
  • 打赏
  • 举报
回复
整体来说需要做的都知道了,下面就是线型的优化和拐角处里了。我会另开贴再详细的问。
PepperEggFriedRice 2016-08-15
  • 打赏
  • 举报
回复
引用 86 楼 schlafenhamster 的回复:
每次 移动量 还 分 steps ,不如 不分步。
schlafenhamster 2016-08-15
  • 打赏
  • 举报
回复
每次 移动量 还 分 steps ,不如 不分步。
hugh_z 2016-08-15
  • 打赏
  • 举报
回复
6666666666666666
juebanxiaobai 2016-08-15
  • 打赏
  • 举报
回复
z坐看各位大神
PepperEggFriedRice 2016-08-15
  • 打赏
  • 举报
回复
引用 80 楼 schlafenhamster 的回复:
看看1.jpg 是 什么图

这个 截取那个原来mspaint.exe的那个纹理
didilc 2016-08-15
  • 打赏
  • 举报
回复
标记一下,以后备用,学习中
schlafenhamster 2016-08-15
  • 打赏
  • 举报
回复
看看1.jpg 是 什么图
PepperEggFriedRice 2016-08-15
  • 打赏
  • 举报
回复
引用 71 楼 schlafenhamster 的回复:
主要是 pDC->SetPixel((int)x,(int)y,color); 慢 用 memDC 试试
不对 - - 我用的是drawimage....不是简单的画线 下面是源码。就是鼠标移动过快的时候很慢。现在就是想以图片大小为基准 隔固定像素进行画图。再加上图片旋转利用三角函数 现在正在想这两个算法如何结合起来。
void Ccrayoon3Dlg::OnMouseMove(UINT nFlags, CPoint point)
{	
	int dx = point.x - apoint.x, dy = point.y - apoint.y, steps, k;  
	float xIncrement, yIncrement, x = apoint.x, y = apoint.y;  
	//
	if (abs (dx) > abs (dy)) 
	{	
		steps = abs (dx);  
	}
	else
		{		
			steps = abs (dy);  
		}//
	xIncrement = dx / (float) steps;  
	yIncrement = dy / (float) steps;  
	//
	Graphics graphics(this->m_hWnd); 
	Image image(_T("1.jpg")); 
	CRect rect; 
	GetClientRect(rect); 
	CPoint  savepoint;
	
	//graphics.RotateTransform(30);
	//	


	
	for (k=0; k<steps; k++)
	{  
		x += xIncrement;  
		y += yIncrement;  
		savepoint.x=x;
		savepoint.y=y;
		
		graphics.DrawImage(&image,savepoint.x,savepoint.y,5,40);
	}  
	
	apoint.x=point.x;
	apoint.y=point.y;

}
PepperEggFriedRice 2016-08-15
  • 打赏
  • 举报
回复
引用 71 楼 schlafenhamster 的回复:
主要是 pDC->SetPixel((int)x,(int)y,color); 慢 用 memDC 试试
ok
cattpon 2016-08-15
  • 打赏
  • 举报
回复
learning~
hegelkkk 2016-08-15
  • 打赏
  • 举报
回复
不错,谢谢分享
PepperEggFriedRice 2016-08-15
  • 打赏
  • 举报
回复
引用 89 楼 schlafenhamster 的回复:
要快的话 1 不使用 GDI+ 2 使用 PatternBrush 如 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); m_CrayonBr.CreatePatternBrush(&bmp); 因为 brush 与 rect 没有 固定 关系, 一次 Move 可以 填充 满
谢大神 感觉配合上鼠标移动的旋转图片要做出来了
schlafenhamster 2016-08-15
  • 打赏
  • 举报
回复
要快的话 1 不使用 GDI+ 2 使用 PatternBrush 如 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); m_CrayonBr.CreatePatternBrush(&bmp); 因为 brush 与 rect 没有 固定 关系, 一次 Move 可以 填充 满
freegoodxp 2016-08-15
  • 打赏
  • 举报
回复
我觉得,我是醉了
ljheee 2016-08-14
  • 打赏
  • 举报
回复
学生波 2016-08-14
  • 打赏
  • 举报
回复
回帖有积分么?
cattpon 2016-08-14
  • 打赏
  • 举报
回复
看看是什么~
shiter 2016-08-13
  • 打赏
  • 举报
回复
几位高手回复了这么多,下次这种好帖第一时间,叫我加分,哈哈
加载更多回复(71)
【图书描述】: GDI+是新一代的图形接口。如果要设计.NET Framework图形应用程序,就必须使用GDI+。本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。 本书适合于开发GDI+图形应用程序的初、中级程序员阅读,书中给出了大量用C#语言编写的可重用示例代码,可以使读者更快地掌握书中所介绍的各种知识和概念。本书也可以作为大专院校相关课程的重要辅导教材。 【编辑推荐】: 《GDI+图形程序设计》是为.NET开发人员介绍如何编写Windows和Web图形应用程序的指南用书。通过大量详尽的实例,本书使有经验的程序员可以更深入地理解在.NET Framework类库中定义和整个GDI+API。   本书从介绍GDI+Windows图形程序设计的基本知识开始,其核心是对一些实际问题的指导,包括如何使用Windows Forms及如何优化GDI+的性能。本书通过一些例子来说明如何开发真实世界的工具,如GDI+Painter、GDI+Editro、ImageViewer和ImageAnimator等。另外,作者还给出了大量使用C#语言编写的可重用示例代码,读者可从网上下载完整的C#和Visual Basic.NET源代码,并可通过这些源代码查看书中各图的彩色效果 第1章 GDI+ ——下一代图形接口 1.1 理解GDI+ 1.2 探索GDI+ 的功能 1.3 从GDI的角度学习GDI+ 1.4 .NET中的GDI+ 名称空间和类 总结 第2章 第一个GDI+ 应用程序 2.1 绘制表面 2.2 坐标系统 2.3 指南——第一个GDI+ 应用程序 2.4 一些基本的GDI+ 对象 总结 第3章 Graphics类 3.1 Graphics类的属性 3.2 Graphics类的方法 3.3 GDI+ Painter应用程序 3.4 绘制饼图 总结 第4章 使用画笔和钢笔 4.1 理解和使用画笔 4.2 在GDI+ 中使用钢笔 4.3 使用钢笔进行变形 4.4 使用画笔进行变形 4.5 系统钢笔和系统画笔 4.6 一个真实世界的例子 ——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 总结 第5章 颜色、字体和文本 5.1 访问Graphics对象 5.2 使用颜色 5.3 使用字体 5.4 使用文本和字符串 5.5 渲染文本的质量和性能 5.6 高级版式 5.7 一个简单的文本编辑器 5.8 文本变形 总结 第6章 矩形和区域 6.1 Rectangle结构体 6.2 Region类 6.3 区域和剪辑 6.4 剪辑区域示例 6.5 区域、非矩形窗体和控件 总结 第7章 图像处理 7.1 光栅图像和矢量图像 7.2 使用图像 7.3 操作图像 7.4 在GDI+ 中播放动画 7.5 使用位图 7.6 使用图标 7.7 扭曲图像 7.8 绘制透明的图形对象 7.9 查看多个图像 7.10 使用图片框查看图像 7.11 使用不同的大小保存图像 总结 第8章 高级图像处理 8.1 渲染位图的一部分 8.2 使用图元文件 8.3 使用颜色对象应用颜色映射 8.4 图像属性和ImageAttributes类 8.5 编码器参数与图像格式 总结 第9章 高级二维图形 9.1 线帽和线条样式 9.2 理解并使用图形路径 9.3 图形容器 9.4 读取图像的元数据 9.5 混合 9.6 Alpha混合 9.7 其他高级二维主题 总结 第10章 变形 10.1 坐标系统 10.2 变形的类型 10.3 Matrix类与变形 10.4 Graphics类与变形 10.5 全局变形、局部变形和复合变形 10.6 图像变形 10.7 颜色变形和颜色矩阵 10.8 图像处理中的矩阵操作 10.9 文本变形 10.10 变形顺序的重要性 总结 第11章 打印 11.1 简要地回顾使用Microsoft Windows进行打印的历史 11.2 打印过程概述 11.3 第一个打印应用程序 11.4 打印机的设置 11.5 PrintDocument和Print事件 11.6 打印文本 11.7 打印图形 11.8 打印对话框 11.9 自定义页面设置 11.10 打印多个页面 11.11 页边打印——注意事项 11.12 进入细节——自定义控制和打印控制器 总结 第12章 开发GDI+ Web应用程序 12.1 创建第一个ASP.NET Web应用程序 12.2 第一个图形Web应用程序 12.3 绘制简单的图形 12.4 在Web上绘制图像 12.5 绘制曲线图 12.6 绘制饼图 总结 第13章 GDI+ 的最佳实践及性能技术 13.1 理解渲染过程 13.2 双缓存和无抖动绘图 13.3 理解SetStyle方法 13.4 绘图过程的质量与性能 总结 第14章 GDI互操作性 14.1 在受控环境中使用GDI 14.2 在受控代码中使用GDI的注意事项 总结 第15章 其他GDI+ 示例 15.1 设计交互式GUI应用程序 15.2 绘制具有形状的窗体和Windows控件 15.3 为绘制的图像添加版权信息 15.4 从流或数据库读取及写入图像 15.5 创建自绘制的列表控件 总结 附录A .NET中的异常处理
c#图形书中最经典的一本书当中包括饼图,条形图,绘图板制作等 第1章 GDI+ ——下一代图形接口 1.1 理解GDI+ 1.2 探索GDI+ 的功能 1.3 从GDI的角度学习GDI+ 1.4 .NET中的GDI+ 名称空间和类 总结 第2章 第一个GDI+ 应用程序 2.1 绘制表面 2.2 坐标系统 2.3 指南——第一个GDI+ 应用程序 2.4 一些基本的GDI+ 对象 总结 第3章 Graphics类 3.1 Graphics类的属性 3.2 Graphics类的方法 3.3 GDI+ Painter应用程序 3.4 绘制饼图 总结 第4章 使用画笔和钢笔 4.1 理解和使用画笔 4.2 在GDI+ 中使用钢笔 4.3 使用钢笔进行变形 4.4 使用画笔进行变形 4.5 系统钢笔和系统画笔 4.6 一个真实世界的例子 ——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 总结 第5章 颜色、字体和文本 5.1 访问Graphics对象 5.2 使用颜色 5.3 使用字体 5.4 使用文本和字符串 5.5 渲染文本的质量和性能 5.6 高级版式 5.7 一个简单的文本编辑器 5.8 文本变形 总结 第6章 矩形和区域 6.1 Rectangle结构体 6.2 Region类 6.3 区域和剪辑 6.4 剪辑区域示例 6.5 区域、非矩形窗体和控件 总结 第7章 图像处理 7.1 光栅图像和矢量图像 7.2 使用图像 7.3 操作图像 7.4 在GDI+ 中播放动画 7.5 使用位图 7.6 使用图标 7.7 扭曲图像 7.8 绘制透明的图形对象 7.9 查看多个图像 7.10 使用图片框查看图像 7.11 使用不同的大小保存图像 总结 第8章 高级图像处理 8.1 渲染位图的一部分 8.2 使用图元文件 8.3 使用颜色对象应用颜色映射 8.4 图像属性和ImageAttributes类 8.5 编码器参数与图像格式 总结 第9章 高级二维图形 9.1 线帽和线条样式 9.2 理解并使用图形路径 9.3 图形容器 9.4 读取图像的元数据 9.5 混合 9.6 Alpha混合 9.7 其他高级二维主题 总结 第10章 变形 10.1 坐标系统 10.2 变形的类型 10.3 Matrix类与变形 10.4 Graphics类与变形 10.5 全局变形、局部变形和复合变形 10.6 图像变形 10.7 颜色变形和颜色矩阵 10.8 图像处理中的矩阵操作 10.9 文本变形 10.10 变形顺序的重要性 总结 第11章 打印 11.1 简要地回顾使用Microsoft Windows进行打印的历史 11.2 打印过程概述 11.3 第一个打印应用程序 11.4 打印机的设置 11.5 PrintDocument和Print事件 11.6 打印文本 11.7 打印图形 11.8 打印对话框 11.9 自定义页面设置 11.10 打印多个页面 11.11 页边打印——注意事项 11.12 进入细节——自定义控制和打印控制器 总结 第12章 开发GDI+ Web应用程序 12.1 创建第一个ASP.NET Web应用程序 12.2 第一个图形Web应用程序 12.3 绘制简单的图形 12.4 在Web上绘制图像 12.5 绘制曲线图 12.6 绘制饼图 总结 第13章 GDI+ 的最佳实践及性能技术 13.1 理解渲染过程 13.2 双缓存和无抖动绘图 13.3 理解SetStyle方法 13.4 绘图过程的质量与性能 总结 第14章 GDI互操作性 14.1 在受控环境中使用GDI 14.2 在受控代码中使用GDI的注意事项 总结 第15章 其他GDI+ 示例 15.1 设计交互式GUI应用程序 15.2 绘制具有形状的窗体和Windows控件 15.3 为绘制的图像添加版权信息 15.4 从流或数据库读取及写入图像 15.5 创建自绘制的列表控件 总结 附录A .NET中的异常处理

19,468

社区成员

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

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