-by Alex
以前放另外一个地方的一些笔记,先整理在javaeye里
[备份]SVG构建复杂操作界面的测试
2009-04-05 21:57 (分类:默认分类)
SVG是ADOBE提供的一个结构化矢量图构建的东西
近期因某项目中要增加一个非常复杂的展示界面,Js不能直接支持绘图比较郁闷
所以对SVG做了个简单测试
客户端需要安装Adobe的SVG插件
svg绘图的各种标记就不详细说了, SVG本身是W3C的规范,因此所有对W3C标准的操作均能够应用于SVG
在jQuery的插件集里找到了一个对SVG支持的plugin,以下是示例代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery SVG Basics</title>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" src="jquery.svg.js"></script>
<script type="text/javascript">
$(function() {
$('#svgbasics').svg({onLoad: drawInitial});
$('button').click(drawShape);
});
function drawInitial(svg) {
}
function test(evt) {
alert(evt.target.id);
}
function drawShape() {
var shape = this.id;
var svg = $('#svgbasics').svg('get');
if (shape == 'rect') {
//svg.rect(20, 50, 100, 50, 10, 10, {fill: 'yellow', stroke: 'navy', 'stroke-width': 5},{});
for (var i= 0; i < 10; i++) {
var obj = svg.other(null, 'rect', {x : 5, y : 20 * i, width:150, height:20, fill: 'yellow', stroke: 'navy'});
obj.addEventListener('click', test, false);
obj.setAttribute('id', 'id_'+ i );
obj.setAttribute('style', 'cursor:hand');
}
for (var i= 0; i < 10; i++) {
var obj = svg.other(null, 'rect', {x : 155, y : 20 * i, width:150, height:20, fill: 'red', stroke: 'navy'});
obj.addEventListener('click', test, false);
obj.setAttribute('id', 'id_'+ (10 + i) );
obj.setAttribute('style', 'cursor:hand');
}
}
}
</script>
<style type="text/css">
@import "jquery.svg.css";
#svgbasics {
width: 400px;
height: 300px;
border: 1px solid #484;
}
</style>
</head>
<body>
<div id="svgbasics"></div>
<p><button id="rect">Add rectangle</button></p>
</body>
</html>
网上jQuery svg原版文档里没有提供对js事件支持的介绍,这段代码里增加了事件支持。对于其余的绘制方法,参考原文档http://keith-wood.name/svg.html
分享到:
相关推荐
使用 SVG 作为画布的 React 手绘矢量绘图工具:paintbrush: 概述功能支持桌面和移动。 接受来自鼠标、触摸板和图形输入板的输入。 要求 需要 React 16.4 依赖于 Immer 和 pepjs 想在使用之前测试 React Sketch Canvas...
源码可能在这些环境中构建和测试过,尤其是对于Windows平台的应用。 10. 开发与调试:源码应该包含了项目文件和必要的配置,使得开发者能够快速地在VS2005或VS6中打开并运行项目,进行调试和自定义。 通过深入理解...
8. **调试与测试**:开发过程中,需要进行充分的测试,确保各种功能正常工作,如确保绘制的图形正确无误,撤销/重做功能可靠,以及在不同操作系统或浏览器下的兼容性。 9. **文件保存与加载**:为了让用户能够保存...
- **图形库**:为了在屏幕上画出图形,通常会使用图形库,如OpenGL、DirectX或SVG等。这些库提供了各种图形绘制函数,可以绘制线条、形状、填充等。 - **颜色处理**:在画图小程序中,颜色选择是关键。颜色可能...
5. **兼容性**:电气画图软件通常支持导出多种格式,如PDF、SVG、DXF等,方便与其他软件(如CAD、CAE)交换数据,或打印制作实物模型。 6. **版本控制**:软件通常有版本控制功能,可以保存不同阶段的设计,方便...
- **导出与打印**:设计完成后,软件可能提供导出电路图功能,以便于分享或打印,同时可能支持导出为常见的工程文件格式,如SVG或PDF。 - **元件库**:包含丰富的电子元件库,覆盖电阻、电容、二极管、晶体管等...
本主题主要探讨如何使用JavaScript实现跨浏览器的画线和画图功能,特别是兼容Firefox和IE等主流浏览器。 首先,JavaScript本身并不直接支持 canvas 元素的低级图形操作。canvas 是HTML5引入的一个元素,提供了在...
6. **保存与导出**:将绘制的图形保存为特定格式的文件,如SVG、PNG、JPEG等,以便进一步处理或分享。 接下来,一卡通系统是一种集成化管理平台,常用于校园、企事业单位等环境,实现多方面的身份识别和支付功能。...
课程设计报告则会涵盖以上各个方面的详细设计思路、实现方法、遇到的问题及解决方案,可能还包括性能优化、测试结果等内容。通过阅读这份报告,可以深入理解项目的完整流程和技术难点。同时,它也是对学习成果的一种...
这个软件是作者亲自设计和测试的,旨在提供一个实用的图形绘制工具。为了运行这个软件,你需要具备C++开发环境,包括编译器和其他必要的库。 C++是一种强类型、面向对象的编程语言,它在系统编程、游戏开发、科学...
10. **兼容性测试**:为了确保在不同操作系统和设备上都能正常运行,进行广泛的兼容性测试是必要的。 通过这些技术,"画图佩奇"应用可以为用户提供一个创新的、互动的绘画体验,将传统的静态绘画转化为动态的创作...
6. **导出与共享**:完成设计后,Timegen通常支持导出为多种格式,如PDF、PNG、SVG等,方便在报告、演示或团队协作中分享。 7. **版本控制与协作**:对于大型项目,Timegen可能集成了版本控制功能,使得团队成员...
常见的格式可能是BMP、PNG或SVG等图像格式。开发者会使用Windows API的`CreateFile`, `WriteFile`, `CloseHandle`等函数来实现文件写入,或者使用第三方库如libpng或TinyXML进行特定格式的序列化。 7. **状态管理**...
8. **调试与测试**:进行充分的单元测试和集成测试,确保程序的稳定性和性能。 9. **异常处理**:合理地处理可能出现的错误和异常情况,提供友好的错误提示。 10. **代码优化**:在保证功能完整性的前提下,优化...
- **电路设计**: 电子工程师可以使用它模拟电路布局,测试不同设计的可能性。 - **可视化编辑器**: 在任何需要图形化表示和编辑的应用中,如地图编辑、网络拓扑等,`draw2d`都是理想的选择。 ### 4. 开始使用 要...
5. **文件保存和加载**:为了保存用户的绘图,项目可能实现了将图形数据存储到文件(如BMP、PNG、SVG格式)的功能,并能读取这些文件恢复绘图。 6. **源码结构**:了解项目的目录结构和源码组织,有助于理解其模块...
6. **调试与测试**:编译并运行程序,检查图形是否按预期显示,如果有问题,根据错误信息进行调试。 7. **优化与维护**:随着项目的进展,你可能需要优化代码性能,或者根据用户反馈调整图形界面。 总的来说,...
在提供的压缩包文件中,`wzgrapher.exe`可能是用于辅助开发或者展示wz_jsgraphics功能的一个可执行程序,它可能包含了一些示例或者测试用例,帮助用户快速理解和使用这个库。`history.txt`通常记录了项目的更新历史...
例如,用D3.js创建柱状图,我们需要准备数据,定义SVG画布,设置X轴和Y轴,然后根据数据生成柱状图元素。 饼图则适用于展示部分与整体的关系。在JS中,饼图可以通过ECharts、C3.js或AmCharts等库轻松实现。创建饼图...