C#中绘制和编辑可缩放矢量几何图形

kgduwu 2015-01-14 09:47:28
要按演出场所的长宽比例生成一块背景画布,然后按预想的场所内各种设备的布局位置,在画布上画出各种设备简单几何示意图,画布及画布内的几何图形支持矢量缩放,并且用户可以通过开发的软件能对设备的几何示意图进行添加、删除、移动这些编辑操作。WritteableBitmap好像可以支持就地几何图形绘制修改,但是绘制的图形似乎不能支持矢量缩放,有没有做过C#/WPF中类似开发的,给些思路
...全文
537 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
good_jobs 2015-01-16
  • 打赏
  • 举报
回复
C# 图形可视化开发 图形控件开发 GDI+图形渲染 类似CAD系统开发、绘图系统开发等等
assky124 2015-01-14
  • 打赏
  • 举报
回复
WPF 直接用Canvas + Path 不行? 想偷懒可以对Visio进行二次开发
  • 打赏
  • 举报
回复
zixingcheng_ 2015-01-14
  • 打赏
  • 举报
回复
可以用专门的软件实现。 也完全可以自己实现,思路很简单,实质就是两个坐标系的转换问题,思路如下:第一块画布A(完全可以是虚拟的)1:1比例记录所有对象信息,也就是你的示意图,应该明白吧,然后另一个画布B用于实际的展示。 B画布可能放大缩小,取得B画布的展示范围,然后将该范围换算为A对应的范围,取出A部分内容,放大/缩小为B表示的内容即可,注意如果A已经生成实在的画图,就等同于局部图片的放大缩小功能,可能存在马赛克,所以A最好是个虚拟的(就可能不一定是个画布,怎么记录都成,只要后面能判断对象在指定范围即可),虚拟的可以实现矢量化。 矢量化实现:B区域转换为A区域,通过该矩形区域,提取所有该区域内记录的对象信息,然后换算为B展示区坐标进行绘制,注意部分对象可能跟区域边界相交(不可避免),需要进行交点计算,生成该对象在该区域的裁剪几何对象,这样所有绘制的对象全部在区域内,绘制时换算为B的坐标绘制即可,B的范围每次变动均需重新执行上述步骤。 作为优化可以将展示区范围适当扩大冗余,便于缩放时快速处理(缓存部分数据),可以先不考虑,后期优化在弄。 原理很简单,但实现还是很复杂的,坐标转换计算还是要一定水平才能搞清楚,慎重!可以查询自定义曲线相关代码参考。
  • 打赏
  • 举报
回复
GDI+可以的,但是要求你非常熟悉3D建模和GDI 可以参考第三方的 http://www.mythshareware.com/axsImaging_NET-16432.html 这个桌面程序和web都可以用的插件,但商业发行肯定是要银子的
21世纪什么最重要?通用!想让你的图形控件和主流软件共享同一种编辑结果吗,那就选择我吧!国内唯一全面基于国际矢量图形标准SVG的专业开发控件,提供全面的矢量编辑能力,能适应组态软件和其他图形软件开发需要。能够和其他主流的编辑软件如illustrator,Visio等共享最终编辑结果。使用VectorControl.Net,您可以:> 基本形状绘制,支持圆、椭圆、矩形、正方形、直线、多边形、折线的绘制> 图像和文本构造,支持导入图像和文本构造> 扩展形状绘制,支持星形形状和扇形的构造> 钢笔工具绘制,支持任意形状的曲线构造(贝赛尔曲线)> 二维变换,支持缩放、扭曲、平移和旋转等二维变换,并可以启用或禁用这些操作。> 图形的成组和解组> 图形的层次调整> 支持多个图形之间的对齐> 支持多个图形之间的分布功能> 调整多个图形的尺寸以达到相同高度或宽度> 网格、参考线、标尺等完整视图环境并支持吸附。> 支持外部自定义形状和图元文件,给与用户自由扩展功能的能力,并能将当前绘图内容导出为形状和图元> 支持连接线,可以在对象之间保持联系> 无限制的撤销/重作> 支持SVG文件的导入> Bmp,Jpg,Gif,Tiff等多种栅格图像格式的导出> SVG文件代码预览> VectorControl.Net还提供了许多Windows界面开发组件,包括弹出菜单时容器,形状和组件库选择器等> 打印支持> 两套完整的示例程序以及源代码(C#和VB.Net),全面全面展现了如何利用VectorControl.Net控件实现简单的矢量应用(不需要任何手工编码实现SVG浏览器)和利用VectorControl实现一个完整的矢量编辑环境(具备所有矢量图形编辑功能)的能力,您甚至可以直接将我们提供的示例程序用作您默认的矢量图形的编辑器。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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