未发布 Edraw Office Viewer component教程(一):将Microsoft Word嵌入VB.NET并使之自动化
在VB.Net应用程序中嵌入word文档的最佳方法是什么?相信大多数人都记得OLE技术,它可以将Excel图表嵌入到Word文档中。使用Office XP Primary Interpol Assemblies或嵌入WebBrowser控件并导航到相应的Office文档等。但是所有这些技术都不支持完整的Microsoft Word功能。也有很多已知的错误。
本文将逐步介绍如何使用Edraw office viewer component在VB.NET应用程序中嵌入MS Word文件。如果你没有officeviewer.ocx文件,请先安装。
打开Visual Studio并创建一个新的VB.NET应用程序。
右键单击HostOffice解决方案。然后单击“Add Reference...”的选项。
在弹出的对话框中,从浏览选项卡中选择officeviewer.ocx文件。
或从COM选项卡中选择Edraw Office Viewer Component。
单击确定。Edraw Office Viewer Component引用此时已添加到新的vb.net项目中。
切换到Form1的Form设计窗口。
将Edraw Office Viewer Component从“工具箱”面板拖到form1中。
添加以下VB.NET代码来新建、打开、保存、关闭并打印一个word文档,如下所示:
Public Class Form1 Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click If Dialog1.ShowDialog() Then If Dialog1.GetChooseType() = 1 Then AxEDOffice1.CreateNew("Word.Application") ElseIf Dialog1.GetChooseType() = 2 Then AxEDOffice1.CreateNew("Excel.Application") ElseIf Dialog1.GetChooseType() = 3 Then AxEDOffice1.CreateNew("PowerPoint.Application") ElseIf Dialog1.GetChooseType() = 4 Then AxEDOffice1.CreateNew("Visio.Application") ElseIf Dialog1.GetChooseType() = 5 Then AxEDOffice1.CreateNew("MSProject.Application") End If End If End Sub Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click AxEDOffice1.OpenFileDialog() End Sub Private Sub btnSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveAs.Click AxEDOffice1.SaveFileDialog() End Sub Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click AxEDOffice1.CloseDoc() End Sub Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click AxEDOffice1.PrintDialog() End Sub Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click AxEDOffice1.PrintPreview() End Sub Private Sub btnToolbars_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToolbars.Click If AxEDOffice1.Toolbars = True Then AxEDOffice1.Toolbars = False Else AxEDOffice1.Toolbars = True End If End Sub Private Sub btnAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbout.Click AxEDOffice1.AboutBox() End Sub End Class |
打开配置管理器。将Active解决方案平台更改为x86选项。
然后创建VB.NET项目并开始运行。

The office viewer component支持MS Word 97、Word 2000、Word 2003、Word 2007、Word 2010。它可以在Windows 2000/Xp/Vista/2008/7的32位或64位操作系统上运行。将MS Excel或PowerPoint、Visio、Project嵌入到VB.NET应用程序中,只需要改变Open方法的第二个参数。如下所示:public void Open() { axEDOffice1.Open(sPath,“Excel.Application”); axEDOffice1.Open(sPath,“PowerPoint.Application”); axEDOffice1.Open(sPath,“Visio.Application”); axEDOffice1.Open(sPath,“MSProject.Application”); } |
有了word组件,在Visual Basic应用程序中使用COM实现Word自动化就会变得十分简单。从解决方案资源管理器引用中为Word Object Library 11.0添加引用。在这里我所用Word 2003,所以对象库的版本是11.0。
下面的示例代码显示了如何构建一个最小的文档,插入一个书签,并且在随后用文本更换空书签。
Imports Microsoft.Office.Interop.Word Private Sub Automating_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handle Automating.Click Dim word = AxEDOffice1.GetApplication() word.Visible = True Dim doc As Document = AxEDOffice1.ActiveDocument() Dim range As Range = doc.Range range.InsertAfter(“Range1”+ vbCrLf) range.Collapse(WdCollapseDirection.wdCollapseEnd) doc.Bookmarks.Add(“MijnBookmark”,range) range.InsertAfter(“Range2”+ vbCrLf) Dim bookmark As Bookmark = doc。书签(1) range = bookmark.Range range.Text =“Bookmark”+ vbCrLf range.Font.Color = WdColor.wdColorBlue End Sub |
以上就是本次教程的全部内容,接下来会有更多相关教程,敬请关注!您也可以在评论者留下你的经验和建议。
未发布 JMS消息平台FioranoMQ更新v10.3.0,改进共享HA功能 FioranoMQ是世界上第一个基于网格、点对点JMS消息平台,具有强大且独特的功能,包括动态路由、消息流的分布式调试、JMS客户端应用程序的动态部署、无限的可扩展性、直接援引标准的JCA组件以及无与伦比的JMX标准易管理功能。在封闭的基准测试中超过每秒50,000条的消息,FioranoMQ还是世界上最快的独立的标准消息服务器。
v10.3.0新增
改进FioranoMQ共享HA(高可用性)功能
共享HA功能已得到增强,使其对活动代理和共享数据库以及锁定文件之间的网络中断更敏感。通过检查锁定文件是通过NFS共享创建还是使用本地文件,增加了更多安全检测来检查锁定文件上代理的真实性。
新增的共享HA代理解决了以下问题:
当活动代理和共享数据库之间的网络连接断开时更改状态。
数据库和锁定文件运行状况检查:如果活动代理与共享数据库的断开连接,代理将自动进行故障切换。
HA状态线程不会在任何情况下退出。
切换到被动状态后,活动代理必须释放锁,让待机代理获取锁并变为活动状态。
共享HA部署必须满足以下条件:
CSP磁盘使用通知
当启用生产者故障快速功能时,“客户端持久性”(CSP)的磁盘使用率可能非常频繁,具体取决于将消息发送到队列或主题目标时设置的超时值。因此,引入了CSP磁盘使用警报机制。客户端应用程序通过在客户端进行日志记录并在特定生产应用程序的CSP的使用违反配置的阈值时发出提醒。
注意:此功能现在可在Java和C/C++ RTL中使用。
优化加载管理对象
在代理启动期间或通过JMX API调用时,通过XML文件加载管理对象已被优化,以处理更多数量的目标配置。优化确保使用某些常用目的地的客户端应用程序不会受到影响,从而避免长时间停顿。
MQTT安全和认证
支持创建与MQTT代理程序的安全连接。
CSharp RTL(JMS 2.0)的异步发送功能
新的发送方法已添加到MessageProducer中,允许消息异步发送。这些方法立即返回并在单独的线程中执行发送,而不阻塞调用线程。
JMX API
添加以下JMX API:
Connection MBean中的API来获取客户端版本信息和构建号。
主题会话MBean下的API'getPersistentQueueSize()'和'getPSQAvailableMessageCount()'。
'listAllSessionsInfo()',所有主题会话的列表及其PSQ度量。
'getClientID(TopicSessionToken)'获取与主题会话令牌相关联的客户机ID。
'get(set)LockFileValidationTimeout()',在共享HA中锁定文件验证超时。
资源管理器mbean下的'getResourceCount()'分别获取由资源名称和实例计数组成的地图作为关键值。
CSharp RTL
在CSharp RTL中添加了新的管理API,用于限制基于IP地址的FioranoMQ代理。
“未接来电”,当代理人关机时调用的方法将在代理程序启动时存储和执行。此功能现在可在C#RTL中使用。
改变
FioranoMQ 10.3.0代理和Java RTL需要Java 8或更高版本。
基于net beans的Studio工具将不再与FioranoMQ安装程序一起发送,与安装程序一起提供的基于eclipse的Studio将针对64位平台。
共享HA条件:
HA对(Primary-Secondary)通信和网关服务器通信必须共享相同的网络接口卡。
锁定文件和共享数据库必须共享相同的装载点。
HA中的代理不得与HAManager属性“Primary”共享相同的值。
最新的C/C++ RTL库现在使用VS 2015构建。
【示例教程】LEADTOOLS中如何通过OCR识别获取每一行文本 LEADTOOLS可帮您开发出功能强大的文档图像应用程序。其主要功能包括综合图像注释,专业的黑白图像显示(例如灰度级和偏黑),以及专业的黑白图像处理。其它功能包括对黑白图像的性能和内存进行优化,文档图像清理(包括倒置文本,去边界,去打孔机和去线)以及使用LEADTOOLS Fast TWAIN和WIA进行扫描。
本篇文介绍如何通过OCR分别识别获取文档的每一行文本。有一种方法类似于我们的IOcrZoneCharacters.GetWords方法可检索文档的每一行。OCR引擎识别的每个字符都有一个位置。我们可以通过OcrCharacter 结构的position 属性访问这个位置。返回一个或多个OcrCharacterPosition 枚举成员:
下面写了一个简单的小例子,用OcrCharacterPosition 来分别识别出每一行的文字。
using (RasterCodecs codecs = new RasterCodecs())
{
codecs.Options.RasterizeDocument.Load.XResolution = 300;
codecs.Options.RasterizeDocument.Load.YResolution = 300;
RasterImage image = codecs.Load(inputFile);
using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Professional, false))
{
ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime64");
using (IOcrDocument document = ocrEngine.DocumentManager.CreateDocument())
{
document.Pages.AddPage(image, null);
document.Pages[0].Recognize(null);
IOcrPageCharacters pageCharacters = document.Pages[0].GetRecognizedCharacters();
for (int i = 0; i < document.Pages[0].Zones.Count; i++)
{
IOcrZoneCharacters zoneCharacters = pageCharacters.FindZoneCharacters(i);
if (zoneCharacters != null)
{
foreach (var ocrCharacter in zoneCharacters)
{
OcrCharacterPosition position;
position = ocrCharacter.Position;
if ((position & OcrCharacterPosition.EndOfLine) == OcrCharacterPosition.EndOfLine)
{
Console.Write(ocrCharacter.Code + "\n");
}
else
{
Console.Write(ocrCharacter.Code);
}
}
}
}
}
}
}
2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 TWAIN扫描识别工具Dynamic Web TWAIN发布v13.4,改进安装过程丨附下载 Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存多种格式,用户可保存图像到远程数据库或者SharePoint。这个TWAIN控件还支持上传和处理本地图像。
Dynamic Web TWAIN v13.4更新内容
改进:
修复:
试用、下载、了解更多产品信息请点击"咨询在线客服"

未发布 【推荐】2017年你应该了解的11款新型编程工具 对于开发人员来说,工具是至关重要的。工具可以使开发人员的日常工作更加轻松、高效,因为只要关注最重要的事情即可。想要寻找到更好的替代工具往往比坚持使用熟悉的、过时的工具要困难得多。在这篇文章中,我们将列出你可以在日常工作中使用的一些新的编程工具。对在线流媒体感兴趣的许多开发人员也已经开始在其开发环境中使用这些新工具,因为这些工具与其陈旧的设施相比具有明显的优势。
你可能会想,如果旧的工具可以完成工作,那么是否还有必要去寻找新的替代工具呢?可以肯定的说,技术始终在变革,它正在不断地塑造、改变我们的工作方式,所以,它有必要保持更新。此外,新开发工具可以通过自动化在某些方面为你的工作增添更多价值,从而更好地帮助你控制你的工作流程。所以,如果你现在确信并准备好考虑使用市场上一些新的编程工具,请继续阅读本文,以找出其中最好的、最适合你的工具。
1. LiveEdu

LiveEdu 是开发人员和工程师经常光顾的好地方。它是一个基于项目的学习平台,服务于游戏开发、设计、数据科学、编程、增强现实、人工智能以及虚拟现实等方面的技能提升。学习的关键在于项目的真实性,而且 LiveEdu平台还提供了蕴含许多不同主题的项目教程,可以适用于任何人,包括初学者。
2.Standup

Standup 对于监控团队开发进度而言是一款非常好的工具。它可以很好地集成所有你已经在用的流行工具(例如Trello、BitBucket、GitHub等)。那么接下来,它是如何工作的呢?首先,它会根据开发团队成员的提交历史完全自动地生成工作报告。这有助于团队成员之间轻松地实现信息共享,也让团队成员之间形成了积极的竞争关系。这一想法是由Mesh Studio提出的,当时他们正在完成一个客户的严格的汇报需求的合同工作。
3. Cell
Cell 自称是“自驱动的网页应用开发框架”。“框架”这一关键词应该会立刻让你想到,它应该包含APIs、方法、或其他框架应该具备的功能。但是,Cell却提供了一种全新的方式来查看如何编写HTML 代码。它适用于3个简单的规则,而且不运行任何函数就能够自主构建DOM。此外,Cell还提供了一种类似写小说的方式(a novel approach)来开发网页应用。
4. Osquery
Osquery 是 Facebook 通过 Query 语言揭示操作系统的方法。虽然乍看起来并不是很有趣,但它其实具有很多实际的用途。例如,它可以用于获取通过USB连接的硬件设备的列表。
对于那些想要保护自己的应用程序免受安全漏洞影响,或是能够更好地监视其应用程序在不同系统上的性能的Web开发人员来说,其中一个相对比较有效的方法就是不使用底层函数或API交互的能力。
5. React Native Firebase
React Native Firebase 可以帮助开发人员更加轻松地使用 React Native 和Firebase。利用RN Firebase,你可以 在Android和iOS系统上使用 JavaScript bridge轻松访问本地 eFirebase SDK。
6. Warp
Warp 是一款非常简单的工具。它可以让任何人分享他们的终端。共享终端就像输入一个 warp open 命令一样简单。这可以帮助开发人员或主机供应商轻松地分享彼此的终端。这款工具的关键特征在其“安全性”和“易于传输”。让分享变得前所未有地容易!你很快就会忘记SSH 的必要性,并使用该功能与远程团队和新成员进行互动。
7. Draft
Draft 是一款新工具,可以帮助开发人员轻松地在 Kubernet上构建应用程序。截至目前为止,在把应用移动到版本库之前,对应用程序进行测试仍然是一项耗时且艰巨的工作。但是,利用 Draft,开发人员就可以针对“内部循环”并在Kubernetes开发沙箱中对应用程序进行测试。沙箱可以通过公共URL轻松获得,并可以使用本地编辑器进行修改。
8. Docsify
Docsify 是一个文档站点生成器工具。但是,它与其他的静态HTML文件生成器却是完全不同的。利用Docsify,你可以使用 Markdown 文件生成你的站点。这样一来,你就可以修改Markdown中的代码,并及时看到更新。这种差异性使它与其他流行工具(例如GitBook等)相比也能占据明显的竞争优势。
9. Prismic IO
Prismic IO 是一个无头CMS系统的后台应用。多亏了API,让它可以与任何站点和应用程序一起使用,并可以轻松地与现有系统进行集成。此外,CMS 还为营销人员提供了一些现代化的发布和创作工具。
10. Javalin
Javalin 为Kotlin和Java提供了简单的REST API。该REST API非常易于使用,且API也是非常流畅的。它不是一个框架,因此不应该被混淆。其目的主要是提供一个非常简单易用的轻量级 REST API库。
以下是用Kotlin实现的 “Hello World”API的示例:
import io.javalin.Javalin
funmain(args: Array) {
val app = Javalin.create().port(7000)
app.get("/") { ctx -> ctx.result("Hello World") }
}
11. Bootsnap
我们都知道,速度对于一些应用程序而言有多重要。Ruby的性能可谓是臭名昭著。然而,Bootsnap尝试通过缓存很多Ruby方法并提高其整体性能来加快其速度。Bootsnap可以以gem的形式轻松地插入你的应用程序中,它目前可用于 MacOS 和 Linux 系统。
未发布 矢量图形引擎库VectorDraw Developer Framework 更新v7.7011.0.3 
VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
VectorDraw Developer Framework点击下载>>>
VectorDraw Developer Framework(VDF)v7.7011.0.3更新内容:
WebJS
新增需求
| 版本 | 需求 |
7.7011.0.1 | 70001006 支持webgl渲染模式的webgl图像 |
| 70001016 支持webgl节剪辑 |
| 70001019 支持使用scriptCommand hatch绘制阴影边框 |
| 70001024 使用鼠标进行缩放 |
| 70001029 实体选择回调 |
Converter
新增需求
| 版本 | 需求 |
| 7.7011.0.1 | 70001015 具有相同名称的vdXproperties导出不正确 |
漏洞
| 版本 | 需求 |
| 7.7011.0.1 | 70001009 DXF代理对象读取出错 |
| 70001020 某些DWF文件未正确打开 |
| 70001025 DGN Xrefs的问题 |
| 70001033 Layout paper未正确初始化 |
| 7.7011.0.2 | 70001040 SPLines在DWG中未正确导出 |
vdDXF
漏洞
| 版本 | 漏洞 |
| 7.7011.0.1 | 70001011 HANDLE类型的XProperty在DXF中未正确导出 |
Engine
新增需求
| 版本 | 需求 |
| 7.7011.0.1 | 70001008 改进ClearEraseItems方法的速度 |
| 70001012 MergeSelection方法用于传递对象的GUIDs |
| 70001027 虚拟机中的OpenGL问题 |
| 70001034 能够设置UCS图标字母的颜色 |
| 7.7011.0.2 | 70001036 外部引用对话框有一个支持路径按钮 |
漏洞
| 版本 | 漏洞 |
| 7.7011.0.1 | 70001007 当文本具有斜角时,EditText和AddText命令不会正确显示光标 |
| 70001010 点上的多点折线未正确显示 |
| 70001013 Inserts Inside Blocks层是处于ON状态时仍不可见 |
| 70001014 图层组和滤镜在删除后仍会保存到DXF中 |
| 70001017 图像在nonused Block中使用时会被删除 |
| 70001018 线型折线显示不正确 |
| 70001021 RenderToGraphics和RenderToDC会清除目标图形上下文的背景 |
| 70001022 尺寸对象未正确导入PDF |
| 70001026 在vdraw Idle中很少会随机出现exeption |
| 70001030 Bhatch命令为创建的polyhatch添加白色作为fillcolor |
| 70001031 用户选择部分文字的拉伸命令会出现错误 |
| 70001032 vdMtext对象没有对齐 |
| 7.7011.0.2 | 70001035 vdLayout DrawCCSAxis showOnOrigin参数无法正常工作 |
| 70001037 用户尝试打开特定文件后应用程序瘫痪 |
| 70001038 图像不能从EMF正确导入 |
| 70001039 Block名称不适用于DWG |
| 70001042 具有Shape段的LineTypes不能在3d中与ExcludeFromList Draw3DFlag正常显示 |
未发布 Oracle宣称Java将每半年发布一个版本 Oracle近日宣布,他们将Java的发布频率改为每六个月一次。
JCP执行委员会在八月份的会议上提到了这一说法,随后,Oracle发言人Donald Smith在他的博客中确认了这一消息。该决定将在Java 9正式发布之后开始实行,也就是说,Java的下一个发布日期是2018年初。
除了发布周期,Oracle还宣布了在Java的构建和发布方式方面所发生的主要变化。Oracle将把OpenJDK的二进制包作为面向开发者的主要版本,取代之前的Oracle JDK。
OpenJDK将采用GPLv2许可(包括“类路径例外”)免费发行,移除了之前在Oracle JDK上存在的一些限制。Oracle JDK仍然会继续存在,但需要与Oracle签订协议才能获得Oracle提供的长期支持。
Java首席架构师Mark Reinhold说,为了避免出现像Java 8和Java 9那样的延期情况,所有决定实行新的发布周期。
Java当前的发布周期为两年一次,Java 9因为模块化系统(Jigsaw)问题一再延期,已经比预期晚了18个月。之前,Java 8也因为安全问题延期了8个月左右。Java 9的GA版本将在9月21号发布。
新的发布周期严格遵循时间点,将在每年的3月份和9月份发布,相应的版本号为18.3、18.9、19.3等。与现在的发布周期不同,新的发布计划不会为了等待某个主要特性完成而延期。如果一个特性还没有完成,它就不会被合并到发布用的代码仓库里。如果错过了一个版本,就要等待下一次发布。
新的发布周期旨在避免未完成的里程碑特性(比如Java 8的Lambda或Java 9的模块化系统)造成发布延期,让其他一些有用的特性也无法与开发者见面。
除了新的发布周期,Oracle将会继续每个季度发布更新版本,时间分别为1月份、4月份、7月份和10月份。也就是说,在下一个大版本发布之前,当前版本都会有两个更新版本。更新版本只包含安全问题修复或回归错误的修复。
Reinhold说:开发者希望加快速度,这样他们就能够尽快地在生产环境中使用新的特性。
对于没有必要快速升级Java版本的企业和组织来说,Oracle建议他们签订每三年一次的长期支持(Long Term Support,LTS)协议。他们因此可以获得由Oracle提供的至少三年的支持,还有可能更长时间,这要取决于市场的反应。
Oracle建议第一个LTS版本为“18.9”,不过这需要与其他的OpenJDK贡献者讨论过后才能最终确定。Java 8被作为一个特别的LTS版本,支持日期截止到2025年。
Smith说:OpenJDK是开发者了解和使用Java SE平台最主要的渠道,而Oracle JDK继续作为Oracle收费用户的LTS版本。
伦敦Java社区的负责人Martijn Verburg也发表了他对新发布周期的看法:新的Java发布周期对于Java生态系统来说是一件好事情。Java 9的Jigsaw和孵化模块问题促成了这一局面的发生。Oracle确实面临着发布方面的巨大挑战,不过OpenJDK社区拥有足够的知识来帮助一起解决挑战。我希望看到中间会有所突破,不过对常规的发布周期仍然很期待。其他实现者可以更早地访问到规范的草案,这样他们就可以更早、更经常地发布版本。
Oracle的Java发布速度经常受到诟病,Java被广大的企业组织所采用,并已成为大量开源平台和语言的基础,而这样的发布速度让Java处于很尴尬的境地。新的Java发布周期恰好满足了广大用户的期望,不过这仍然需要等待Java开发者和Oracle用户的反馈。
未发布 Edraw Max(亿图图示)新手福音:教你思维导图的简单画法! 思维导图,也就是心智图或者脑图,是近年来十分流行的一种有效地思维管理方法。Edraw Max(亿图图示)作为国内仅有的一款综合类型的图形图表设计软件,除了强大的绘图功能,还有丰富的模板和例子,在绘制思维导图方面也十分的简单、快捷,画出来的图表也更专业、时尚!本文总结了Edraw Max(亿图图示)几点基本的绘图方法、步骤,希望能帮助你更轻松、高效地画出你心中的思维导图!目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
第一步:快速创建思维导图
1、打开亿图思维导图软件,点击新建中的“思维导图”;
2、选择从“模板”或者“例子”中新建,双击即可直接进入;
3、在思维导图的编辑界面你会发现自动为你打开了相对应的库和思维导图菜单栏。
第二步:添加主题
方法1:通过用浮动按钮添加:点击浮动按钮右侧功能键进行添加,如下图所示:
方法2: 从符号库中添加:
1、软件界面左侧的符号库中有内置的图形符号,根据需求选择相对应的图形,直接拖拽至绘图界面即可;
2、只要该图形拖拽至需要吸附的主题附近,然后松开鼠标就会自动吸附了。
第三步:通过“思维导图”菜单栏进行编辑
1、插入主题或者副主题:选中需要添加主题或者副主题的图形,点击“插入主题”或者“副主题”即可。
2、插入多个主题:选中需要插入的图形,点击“添加多个主题”,然后在弹出的文本框中输入需要添加的主题名称,一行代表一个主题,如下图所示:
3、插入关系:
方法1:点击“插入关系”后,将鼠标移动至绘图界面,当鼠标靠近主题或者副主题附近时,会出现许多的连接点,只要将鼠标移动至需要添加的连接点上,就会出现红色的标识,如下图所示,然后点击鼠标左键并移动至下一个连接点,再放开鼠标即可。
方法2:通过软件界面左侧“符号库”中的“关系”同样也可以添加关系,将其直接拖拽至绘图界面,然后调整箭头的两个链接点即可。
PS:连接线上一般有两个黄色的菱形符号,拖动它可以对线条的弧度、方向等进行调整。
4、插入图形、照片
方法1:从符号库中添加:点击符号库中小图标,根据预览的图片选择需要的符号库,然后拖拽至绘图界面或者双击都可以。当拖动到思维导图旁,出现一个橙色的框显示时,该符号就已黏附到导图中了。
方法2:在打开所需要的符号库后,点击“思维导图”菜单栏下的“从库中插入图形”,然后在下拉框中点击相应图形,即可插入至思维导图主题中。此方法插入的图形与主题是依附在一起的,移动主题时,图形也一起在移动。
方法3:通过“插入图片”添加,点击“思维导图”菜单下的“插入图片”,即会弹跳出选择图片的窗口,然后在电脑文件中选择相应图片,点击打开即可添加至导图的标题中。此方法可以对插入图片的位置进行调整。
5、对主题进行编号:点击思维导图菜单的编号按钮,即可给整个导图添加编号,再点击一次则取消编号。
6、修改思维导图主题:此功能可以快速的调整整个思维导图的样式,其中包含线条、外框、填充、字体、颜色以及形状属性等等。
第四步:调整思维导图的布局
Edraw Max(亿图图示)提供了七种布局样式,可以一键自动将思维导图进行布局整理,让整个思维导图结构更清晰、明了!
第五步:保存、导出以及打印
1、保存:可直接保存到本地、个人云盘或者团队云。
2、导出:亿图软件支持导出为各种格式的文件,其中包括图片、PS、PDF、Office、HTML、Visio、SVG。
3、打印:亿图软件作为一款纯矢量的绘图软件,在打印时,无论将图表放大多少倍,依旧打印十分清晰。同时如果需要多页打印,还可以对打印页面进行统一设置,让打印更方便、快捷!
未发布 轻松审计代码安全性,Windows 10有妙招 如果你是软件开发人员,又希望自己开发的软件安全性高一点,那么当前的Windows 10企业内部预览版(10.0.16253)中就有一个功能可以做到。
它的位置在“设置 – > Windows Defender – > Windows Defender安全中心 – >应用程序和浏览器控制 – >漏洞保护设置”中,你可以为整个系统或特定程序启用自定义漏洞利用设置。其中有很多不同的保护特性并且许多都可以在审计模式下打开。在审计模式下,它不是在出现情况时终止进程,而是将事件写入事件日志。对于管理员,这就意味着其会允许软件继续运行,同时能够使我们意识到这一情况是何时发生的。对于希望通过了解这些情况以此来改进产品的人来说,它其实是提供了一个启用安全功能的附加好处,即无需重新编译(在某些情况下),就能告诉你确切的程序代码在当它在运行时遇到问题的位置。在版本10.0.16253中,可以进行审计的保护特性包括:
任意代码保护 - 防止非图像支持的执行代码和代码页修改(例如VirtualAlloc / VirtualProtect创建/修改的代码)
阻止低完整性图像
阻止远程图像
阻止不受信任的字体
代码完整性守护者
禁用Win32k系统调用
不允许子进程
导出地址过滤 - 将功能修补到另一个功能的一个常见方法中的一个步骤
导入地址过滤 - 将功能修补到另一个功能的一个常见方法中的一个步骤
模拟执行
验证API调用(CallerCheck)
验证图像依赖完整性
验证堆栈完整性
要充分利用此功能,我们需要安装Windows Performance Toolkit。它是Windows SDK安装程序的安装选项之一。当您启用了您感兴趣的设置后,打开管理命令提示符并浏览到Windows Performance Toolkit目录(通常为Program Files(x86) Windows Kits {Version} Windows Performance Toolkit)。您可以通过运行以下两个命令(在替换文件名所需的任何路径之后)启动并开始收集上述漏洞保护设置的跟踪以及解析堆栈跟踪所需的数据: xperf - “PROC_THREAD + LOADER”-f“wdeg_klogger.etl”
xperf -start“WDEG” - “Microsoft-Windows-Security-Mitigations:0xFFFFFFFFFFFFFF:0xFF:'stack'”-f“wdeg_unmerged.etl”
在您运行任何想要收集的方案之后,您可以停止跟踪并将数据与以下内容合并(再次替换文件名所需的任何路径):
xperf -stop -stop“WDEG”-d“wdeg_merged.etl”
然后,您可以删除创建的前两个文件,因为此时您将拥有第三个所需的所有数据。您可以在Windows Performance Analyzer(WPA)中打开生成的etl文件,并查看数据。
您可以使用wpaPreset文件扩展名保存它,在WPA中加载数据,转到我的预设(在WPA的较新版本中的文件 – >窗口 – >我的存在),选择导入,浏览到保存预设的任何地方,选择它,并双击它以显示视图。另外,您还需要加载符号,以充分利用这一点。您可以在WPA中在File-> Configure Symbols下设置符号; 您需要将其指向msdl.microsoft.com/download/symbols上的Microsoft符号服务器以及您的符号服务器(或您没有符号服务器设置的符号文件的位置)。您可以在加载跟踪时自动配置WPA加载符号,但也可以通过转到文件 – >加载符号来手动加载符号。一旦完成,您将能够轻松地查看堆栈跟踪。它就会像下面这样:
以下是在创建上述过程中我为x64控制台应用程序编译的示例代码:
#include #include using namespace std;void* CreateCodeInVirtualMemory(BOOL writable)
{ BYTE code[3] = { 0x33, 0xc0, 0xc3 }; LPVOID result = VirtualAlloc(NULL, sizeof(code), MEM_COMMIT | MEM_RESERVE, writable ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE); if (result)
{
memcpy(result, code, sizeof(code));
} else cout << "VirtualAllocEx failed with error " << GetLastError() << endl; return result;
}void CreateCodeInVirtualMemoryAndExecute(BOOL useWritableMemory)
{ LPTHREAD_START_ROUTINE addr = (LPTHREAD_START_ROUTINE)CreateCodeInVirtualMemory(useWritableMemory); if (addr)
{ DWORD result = addr(NULL);
cout << "Code at 0x" << hex << (void*)addr << " returned " << result << endl;
} else cout << "NULL address was not executed" << endl;
}void ExecuteIllegalMemory()
{
CreateCodeInVirtualMemoryAndExecute(FALSE);
}
void PrintOptions()
{
cout << "Enter one of the following options:" << endl;
cout << "1 - Execute Memory Not Marked As Executable" << endl;
cout << "2 - Create Code in Virtual Memory" << endl;
cout << "3 - Create Code in Virtual Memory and Execute" << endl;
cout << "0 - Exit" << endl;
}void DecisionLoop()
{ while (true)
{ int selection;
PrintOptions();
cin >> selection; switch (selection)
{ case 0: return; case 1:
ExecuteIllegalMemory(); break; case 2:
CreateCodeInVirtualMemory(TRUE); break; case 3:
CreateCodeInVirtualMemoryAndExecute(TRUE); break; default:
cout << "Invalid input" << endl;
}
}
}int main()
{
DecisionLoop(); return 0;
}
在这里我没有去对它的应用做更多的介绍,但我相信我的抛砖引玉一定能够让更多的人对这一功能产生兴趣。
对于在事件查看器中的应用程序和服务日志中找到的大多数内容,您也可以以相同的方式完成此类操作——单击特定日志的属性,它将具有Provider-Name-Parts / LogName形式的名称。您只需要在xperf命令中使用“Provider-Name-Parts”部分即可。
未发布 矢量图形引擎库VectorDraw Developer Framework v7.7011.0.1发布 
VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
VectorDraw Developer Framework(VDF)更新至v7.7011.0.1,新版本针对提出的需求和bug做了调整和优化。
VectorDraw Developer Framework点击下载>>>
WebJS
新增需求
| 版本 | 需求 |
7.7011.0.1 | 70001006 支持webgl渲染模式的webgl图像 |
| 70001016 支持webgl节剪辑 |
| 70001019 支持使用scriptCommand hatch绘制阴影边框 |
| 70001024 使用鼠标进行缩放 |
| 70001029 实体选择回调 |
Converter
新增需求
| 版本 | 需求 |
| 7.7011.0.1 | 70001015 具有相同名称的vdXproperties导出不正确 |
漏洞
| 版本 | 漏洞 |
| 7.7011.0.1 | 70001009 DXF代理对象读取出错 |
| 70001020 某些DWF文件未正确打开 |
| 70001025 DGN Xrefs的问题 |
| 70001033 Layout paper未正确初始化 |
vdDXF
漏洞
| 版本 | 漏洞 |
| 7.7011.0.1 | 70001011 HANDLE类型的XProperty在DXF中未正确导出 |
Engine
新增需求
| 版本 | 需求 |
| 7.7011.0.1 | 70001008 改进ClearEraseItems方法的速度 |
| 70001012 MergeSelection方法用于传递对象的GUIDs |
| 70001027 虚拟机中的OpenGL问题 |
| 70001034 能够设置UCS图标字母的颜色 |
漏洞
| 版本 | 漏洞 |
| 7.7011.0.1 | 70001007 当文本具有斜角时,EditText和AddText命令不会正确显示光标 |
| 70001010 点上的多点折线未正确显示 |
| 70001013 Inserts Inside Blocks层是处于ON状态时仍不可见 |
| 70001014 图层组和滤镜在删除后仍会保存到DXF中 |
| 70001017 图像在nonused Block中使用时会被删除 |
| 70001018 线型折线显示不正确 |
| 70001021 RenderToGraphics和RenderToDC会清除目标图形上下文的背景 |
| 70001022 尺寸对象未正确导入PDF |
| 70001026 在vdraw Idle中很少会随机出现exeption |
| 70001030 Bhatch命令为创建的polyhatch添加白色作为fillcolor |
| 70001031 用户选择部分文字的拉伸命令会出现错误 |
| 70001032 vdMtext对象没有对齐 |
【本文作者慧都Elyn】