C#进行Visio二次开发之动态仿真实现

扯淡

电子产品,更新换代很快,由于摩尔定理的因,你的电脑太多二年即受市场淘汰了,无论是性能还是价格。所以尽量选购新产品,买最近底成品,比如今年手机是咸面屏时代,type
c接人数了,电脑的cpu由于AMD的Ryzen反击。intel也于2017年总是发布二代产品,所以购买时的8代cpu是首选,但是什么工作还无绝。


作为一个仿了电脑组成原理的食指,我拿先期拿电脑体系的性能指标介绍一下,然后要围绕其做文章

摩尔定律
当价格不转换时时,微处理器类内之结晶管的集成度每18个月翻一番。也就是说我们现在和18只月后费同样钱请到之cpu,后者的性能是前者二倍。

指令
命(又如机器指令)是依赖计算机执行某种操作的命令,是电脑运行的极小作用单位。

Visio二次开发可以兑现之门类情景很多,如电气线路分析、配电网络分析、流程图等,现为路用,又认识多了一个以场合,液压传动的伪。项目成效图如下所示:

小型电脑体系重点性能指标

1 机器字长 ,计算机中一次于好处理的二进制位数。

平常与cpu的寄存器位数,加法器有关。一般等内部寄存器的大小。

2 运算速度,以各级一样秒能执行之命令条数。
a 执行命令的平均速度。
b CPU主频

cpu主频,机器中主时钟频率,它是衡量机器位数的最主要参数。同一型号计算机,其主频越强,完成指令的各一个行步骤时间更欠,执行令速度越来越快。

3 存储器的容量
a 内存容量 (由CPU总线决定,32号地址总线,其
极深内存4GB)

b 磁盘,光盘等容量。

储层器

4 外设扩展能力 ,配置各种外设可能性与适应性。

5 软件配置情况。

微型电脑体系架构.png

处理器硬件基本架构.png

笔记本的处公本和玩以
看剧本的轻重与薄厚区分
片公斤以下的记录本产品都于名“轻薄便带笔记本”(办公本),顾名思义,这无异类别的成品极深之优点就是是体量轻,便于携带,续航时间累加,有利于办公,但是是低压本,cpu性能为阉割,显卡不行。
逛戏本,笨重,但是cpu,gpu性能都大强。

介绍计算机硬件前系前,先给我说一下计算机工作过程,这样您或许会见理解这些硬件的用意。

图片 1 

处理器工作历程

1.0 把程序及数量装入到主存储器中。
2.0 从程序的苗头地址运行程序
3.0
用程序的首地址从存储器中取出第一长达指令,经过译码,执行步骤等决定电脑各职能部件协同运行,完成这漫漫指令,并计算下一致漫漫指令的地点。

4.0
用新获得的命令地址继续读取第二长长的指令并尽,直到程序结束。每一样长指令都是于取指,译码和履行的大循环过程被成就的。

动态仿真,其实也就是是模仿实际线路的走向,实现动画的变现。以前我的Visio的型,基本上都是基于静态的图片展现,并从未安装极端多之动态展现。原来配电网络的通电线路的剖析,严格来说也是静态的,因为多是一次性把通电和未通电的路为绘制出。而动态仿真则要求日益的动画片展现线路的走向与颜色变化。

CPU

cpu由运算器和控制器组成,其中控制器的功效是繁体协调计算机连控制电脑各部件执行顺序的命序列,包括取指令,分析指令和行令。运算器的成效是针对数码进行加工。

AMD的cpu.png

cpu 的性能。
1 三级cache。
高速缓存,其容量越来越充分更是好,其意图是cpu操作多对Cache进行,提高程序的运作速度。
2 超线程技术(Hyper–Threading,HT)
3 多核心技术。

本着CPU,因为只来intel和amd二种品牌,所以若选取对型号,建议购买主流intel的core,今年8代cpu已经进去市场,本着买新不买旧的规格就是推行了。
据悉cpu性能我们明白,当然是主导与线程数是越多越好,选用CPU一若扣核心数据,还要综合外要参数,比如cpu主频、总线速度、制作工艺,一级、二级、三级缓存。对intel
CPU,区分酷睿、奔腾、赛扬,无疑酷睿核心是绝好之,其次是奔腾,赛扬最为低端。最后只要掌握自己之需要就是实行。

CPU用途.png

酷睿I3 I5
I7最早期是故来分别入门,主流,高性能(高端或者游戏爱好者)简单说,I5凡是I7的简化版,I3又是I5的简化版,性能I7>I5>I3,只不过一般人所以I3和I5就够,如果想明白有别性能差异就是进展渲染的时刻,同一代的I7通常快给I5,I5通常快被I3。

区分I几,几代等

image.png

晚缀是U,表示该产品是亚电压版,是最最主流都大的路,办公用户比适用。(超薄本所用,不过性能于阉割)

后缀是HQ、HK后缀的成品,它们都是标准电压的标志,而前者不支持超频,但后者允许用户超频。以HQ、HK为继续的科班电压CPU能够提供更精的特性,但会比U为继承之CPU产生更多的热能,续航也会不同多。

image.png

i3,i5,i7的分别,同一代数7替代低压本,不同代数可能不同,低压标压也说不定两样。准最近之8代u多重CPU,核心与线程都翻了加倍。

要活塞运动的假冒伪劣,要求不歇动画的情形下,可以一直循环的更动。
如下图所展示之职能:

cpu性能好看图 [手撞,微型电脑方面的]

主流cpu性能.jpg

图片 2 

GPU(显卡)

百度百科

图形处理器(英语:Graphics Processing
Unit,缩写:GPU),又如著核心、视觉处理器、显示芯片,是均等种特别在私有电脑、工作站、游戏机及有些活动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
用途是用微机体系所急需的显示信息进行换驱动,并朝显示器提供履扫描信号,控制显示器的正确显示,是连接显示器和民用电脑主板的要构件,也是“人机对话”的要装备之一。显卡作为电脑主机里的一个首要部分,承担输出显示图形的天职,对于从业专业图形设计之食指的话显卡非常重大。

显卡,在电脑组成原理中,没有怎么解释,这东西比较cpu晚多矣,90年间才开始给大家小心,直到日前,其当图形处理,大数据方向有着巨大的优势,其特性远远超越CPU,cpu是万能的,但是以图纸,海量数据方面速度缓慢,如果您发出及时上面的要求,就设一律块大不错的显卡了。特别是游戏迷,以及从CAD,C4D,3DMAX等即时仿佛图形方面的做事,对显卡要就不怕够呛高。显卡主要是英伟达,AMD,以及intel这3大家。

主流CPU的骨干一般是2、4、8这样的做,而GPU则是出于许多只呢多任务要如果的有点核心封装而成为的(Intel管马上为EU,NVIDIA叫其CUDA,AMD叫其流处理器,下文就合于流处理器吧)。

英伟达的GTX1080Ti.png

集成显卡,核心显卡和独门显卡

集成显卡举凡镶嵌在主板及之,集成显卡的视频拍卖是依CPU的演算来贯彻的,显存也使占用内存。但是随着计算机的发展,图形和视图的需,集成显卡越来越无法,于是性质更胜似之独显卡随之出现,性能与功耗都十分高。

基本显卡为Intel为代表,顾名思义,核心显卡直接集成在CPU当中,共享体系内存,主要适用于笔记本,所以基本显卡也是属集成显卡的一致栽,只是购并的地方转移了,当然就中心显卡的起,主板集成显卡已经变为历史

独显卡凡单独为CPU的GPU芯片,拥有自己之显存。它是单身接插在主板及之显示卡,并无是主板自带的,有谈得来单身的显存,如果用不畏如另外购买。

总之,集成显卡的性能是低独立显的卡,集成显卡可以当做是购置cpu或是买主板经常送的显卡,可以知道为未花钱的。独立显卡适用于对显卡要求比较高之巨型单机游戏的用户,当然就是如果耍效果游戏之了,还有即使是绘图或是视频编辑方面的。集成显卡适用于才打普通网络游戏和办公用户,这样整机预算而降。

因此显卡,有要求买独显。

GPU的性能指标
流淌处理器数量、核芯频率、显存、位富有。

显存频率
显存的多少传输速度。GPU的核心频率和CPU的主频差不多一个概念,核心频率有基础频率和加速频率之分,单位也MHz。

注处理器,即着色单元,Pixel
Shader,流处理器是GPU的底子测算单元,相当给CPU的一个着力。流处理器是一致磨蹭显卡最基本之卖点,同架显卡中,流处理器数量进一步多,性能为更是强,但流处理器数量之升官和性的升级换代并无化正比,这吗事关到架构的流处理器效率问题。

显存及其位宽,
显存,又被叫做帧缓存,是为此来存储GPU处理过的或者即将处理的渲染数据显存容量,显存可缓冲存储数据的容量,
显存带宽 显存与显卡芯片里面的的多寡传输量。
相似的话是更加充分进一步好,这点儿独参数决定了显卡在高分辨率和高抗锯齿下的呈现。

显卡,占据市场最高的便是N卡,看一下夫主流显卡的参数。

英伟达显卡.png

友善的需要说得之显卡

需求以及显卡对于图.png

对想耍游戏,钱发不够的心上人,可以依照需要打。没钱
也不得不看看。

差游戏要之GPU][亲手碰,微型电脑方面的]

gpu的游戏.jpg

圈了显卡的性能指标,在对比一下那特性图,大致与指标对于。

GPU性能图[亲手碰,微型电脑方面的]

gpu性能.jpg

 本文介绍如何兑现线走向、颜色变化,以及特定图形(如活塞)的动态仿真效果。

存储器

存储器是计算机用来储存存储部件,用来囤程序与数量。存储器分为主存储器(简称主存,也称内存储器)和辅助存储器(简称辅存,也称外存储器)cpu能够直接看的是主存储器,外存储器(硬盘等)的音务必调入主存后,才能够为cpu访问。

存储器的消息交换

cache(高速缓存),cpu里面,主要是为着缓解CPU和主存的进度不般配问题,不多说,看图说话。

core17高速缓存.jpg

image.png

内存

内存是计算机被重点之部件之一,它是暨CPU进行联络的大桥。计算机被负有程序的运行都是于内存中展开的,因此内存的属性对计算机的熏陶非常特别。
内存(Memory)也深受名内存储器,其作用是用来临时寄存CPU中的运算数据,以及同硬盘等外部存储器交换的数码。只要计算机以运转中,CPU就见面将要运算的多寡调到内存中进行演算,当运算好后CPU再用结果传送出来,内存的运作吧决定了电脑的稳定性运转。

内存条图.jpg

首先实现动态仿真效果,必须事先分析出全部图纸的拓扑网络顺序和层次,这样我们才会懂对的线走向和动画的变更顺序,如配电网络线图备受,必定是电源开始,通过导线或者配备传递电源,以促成电路的贯通。在磨线路被,由油箱开始,经过同文山会海设备,最后又赶回油箱。

硬盘

硬盘.jpg

硬盘是电脑根本的贮存[媒介]某某,由一个要基本上个铝制或者玻璃制的[碟片]结合。外覆盖来[铁磁性]。

硬盘有[固态硬盘](SSD 盘,新式硬盘)、[机械硬盘](HDD
传统硬盘)、混合硬盘(HHD
一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存豆子来囤积,HDD采用磁性碟片来[存储],混合硬盘(HHD:
Hybrid Hard
Disk)是将磁性硬盘和闪存集成及共同的一模一样种植硬盘。绝大多数[硬盘]都是永恒硬盘,被永久性地封固定于[硬盘驱动器]中。

基本参数

容量
作为计算机体系的数[存储器],容量是[硬盘]极端要害的参数。

转速
转折(Rotational Speed 或Spindle
speed),是硬盘内电机主轴的盘速度,也尽管是硬盘[盘片]于同一分钟内所能够好的绝充分转数。转速的快慢是标志硬盘档次的主要参数有,它是决定硬盘里传输率的关键因素之一,在老大特别程度上一直影响及硬盘的速度。硬盘的转向越快,硬盘寻找文件的快也即更加快,相对的硬盘的传输速度也便收获了增强。[硬盘转速]为每分钟多少改变来表示,单位表示也RPM,RPM是Revolutions
Per
minute的缩写,是转/每分钟。RPM值越老,内部传输率就更为快,访问时间纵越是短,硬盘的整性能为即越发好。

日用的通常硬盘的转折一般有5400rpm、7200rpm几种植胜似转发硬盘也是台式机用户之首选;而对于笔记本用户则是4200rpm、5400rpm为主

传输速率
传输速率(Data Transfer
Rate),硬盘的数量传输率是凭硬盘读写多少的速度,单位为兆字节每秒(MB/s)。硬盘数据传输率又连了里数据传输率外部数据传输率。

缓存
缓存是硬盘控制器上的同样块内存芯片,具有极快的存取速度,它是硬盘中存储和外围接口之间的缓冲器。由于硬盘的中间[数码传输速度]与外面介面传输速度不同,缓存在里面从及一个缓冲的意。缓存的大小及进度是直关乎及硬盘的传输速度的主要因素,能够大幅度地增进硬盘整体性能。当硬盘存取零碎数据常常需要不停地在硬盘与内存之间交换数据,有大缓存,则好拿那些零碎数据暂存在缓存中,减多少他系的负载,也提高了数码的传输速度。

对硬盘,我建议市固态硬盘,其速好快。如果钱莫是多,可以使固态加机械硬盘,把操作系统和软件在固态硬盘中,提升系统运转速度。

假如当Visio图纸上落实而齐图的卡通片效果,其中最要之精深是使下代码:

主板

电脑机箱主板,又吃主机板(mainboard)、系统板(systemboard)或母板(motherboard);它分成商用主板及工业主板两栽。它装在机箱内,是电脑最核心的也是极致着重之预制构件之一。主板一般为矩形电路板,上面安装了成计算机的首要电路系统,一般有BIOS芯片、I/O控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板与插卡的直流电源供电接插件等构件。

突出的主板能提供平等密密麻麻接合点,供处理器、显卡、声效卡、硬盘、存储器、对外设备相当配备属。它们通常直接插入有关插槽,或因故路连接。主板及最好要之重组组件是芯片组(Chipset)。而芯片组通常由北桥暨南桥结缘,也发出来以单片机筹,增强其属性。这些芯片组为主板提供一个通用平台供不同装备连,控制不同装备的沟通。它也含对两样扩充插槽的支持,例如处理器、PCI、ISA、AGP,和PCI
Express。芯片组亦为主板提供额外功能,例如合显核,集成声效卡(也如内置显核和停放声卡)。

由于匪是自己组装,这个笔记本选择得忽略

 System.Windows.Forms.Application.DoEvents();
 Thread.Sleep(50);

电源及散热

电脑电源是将220V交流电,转换成为直流电,并专门为电脑配件如CPU、主板、硬盘、内存条、显卡、光盘驱动器抵供电的设施,是电脑各部件供电的要点,是电脑的要组成部分。

TDP
TDP的英文全称是“Thermal Design
Power”,中文直译是“散热设计功耗”。主要是供于电脑体系厂商,散热片/风扇厂商,以及机箱厂商等等进行系统规划时行使的。一般TDP主要采用被CPU,CPU
TDP值对诺多样CPU的最后版本在满负荷(CPU
利用率也100%的驳斥及)可能会见达到的嵩散热热量,散热器必须保证在处理器TDP最老之下,处理器的温度还是在设计范围中。

TDP是CPU电流热效应和CPU工作经常生的任何热量,TDP功耗通常作为电脑(台式)主板设计、笔记本电脑散热系统规划、大型计算机散热设计等散热/降耗设计之要参照指标,TDP越老,表明CPU在工作经常会生出的热量越充分,对于散热系统吧,就待将TDP作为散热能力设计的低指标/基本指标。就是,起码要会拿TDP数值表示的热量散出。例如,一个笔记型电脑的CPU散热系统或者于规划呢20W
TDP,这象征了它可消灭20W的热量(可能是通过主动式散热手段使采用风扇,或是被动式散热手段如热管散热),从而确保CPU自身温度不高于晶片的极致特别结温。

TDP功耗可以大概反映来CPU的发烧情况,实际上,制约CPU发展的一个重点问题就是是散热问题。温度可以说凡是CPU的杀人犯,显然发热量低的CPU设计开展达到更胜似的工作频率,并且于全计算机体系的计划、电池使用时间甚至环保地方都是大有裨益。目前底台式机CPU,TDP功耗超过100W基本是休长的,比较漂亮之数值是低于50W。

看一张intel7代的cpu,注意其TDP一栏。

cpu.png

观这等同布置7代表intel的cpu和上面的7代U的希冀对比,可以发现7代U都是2中坚4线程,但是7代其它除了I3是2基本4线程,其它都比U强,所以追求性就采购戏仍吧,舍弃外观与总量,以及续航等特征吧。

屏幕
屏幕种类

时下笔记本电脑液晶面板基本以TN和IPS为主,前者历史悠久、成本低廉、延迟短响应速度快,但色彩、对比度、可见到角度没法给人看中。于是更加多笔记本电脑采用IPS面板,在情调、对比度、可看角度方面远远优于TN,近一两年来推延短板也得改善
屏幕尺寸。

就此选择IPS屏幕吧,选择主流。

屏幕.png

屏幕尺寸

纵然笔记本屏幕大小,选择而喜爱的深浅就执行。

屏幕尺寸调查.png

翻看了不少篇章,以及还圈了b站几单视频,如果发生误,欢迎指出,好多事物争议多,有争议之,请见谅。

好了要来了,其实就首文章就是笔记本硬件攻略,笔记本性能有成百上千元素,我只是科普了一些东西。这首稿子,没有计划及价格,不克让您用卓有成效之价钱买到正确的记录本。

 

求助

准备购买一个游戏本,用于做3Dmax,C4D,PS,cad等跟图纸打交道的作业,计划最少8gddr,128ssd,7,8代表标压本,显卡感觉当至少GTX1050ti,有没有产生大神帮忙引荐一下?价格在5K-6.5K之间。
多谢,帮别人推荐的。

参考文章
自己比累,所以只叫来文章链接。
万头版台式机组装养成记
稍白攻略①:笔记本的抉择
听说,你准备带电脑及大学
聊白攻略②:笔记本推荐(续)
你的微机确实符合你么
酷睿i3, i5,
i7处理器的差异在啊
笔记本CPU小科普
显卡科普知识
独自显卡与主导显卡和集成显卡有啊分别
主导显卡和单独显卡哪个好?
控制显卡性能的比主要之几个参数是什么?
内存是啊
电脑内存的用意
硬盘
TDP
什么是TDP功耗
笔记本的屏幕都出什么差别?

 

成百上千情景下,我们或针对这个DoEvents函数的效能未是大熟稔,其实我们得掌握为主动点事件,让消息流提前进入拍卖流程,这样咱们就算会看到在Visio图纸上之图样更新功能了。

全总图形分析的过程,分为3独步骤:

1)进行简单的拓扑分析,把装备大的干维持到数据库进行解析。

2)根据数据库结构,对配备关系展开剖析,获得拓扑网络的设施层次结构列表

3)根据不同之装置项目和图纸当前状态,对设施开展适量的绘图和动画片仿真展示。

 

大约的代码如下所示:

       private void PowerCutAnalyze(Visio.Application app)
        {
            #region 获取操作设备和判断是否图纸发装备
            Visio.Shape shapeSelected = null;
            try
            {
                Visio.Window wndVisio = app.ActiveWindow;
                if (wndVisio.Selection.Count == 1)
                {
                    shapeSelected = wndVisio.Selection.get_Item16(1);
                }
            }
            catch { ; }

            if (!VisioUtility.HasShapeInWindow(VisWindow))
            {
                MessageUtil.ShowWarning(“图张上未曾配备, 不可知行该操作”);
                return;
            } 
            #endregion

            app.UndoEnabled = false;
            List<string> list = new List<string>();
            string message = “”;
            list = powerCutBLL.RunPowerCutAnalyzing(app, shapeSelected, ref message);
            app.UndoEnabled = true;

            if (message != “”)
            {
                MessageUtil.ShowError(message);
                return;
            }

            if (list.Count > 0)
            {
                AnalyzeShapeIdList.Clear();
                foreach (string shapeStrID in list)
                {
                    AnalyzeShapeIdList.Add(Convert.ToInt32(shapeStrID));
                }
                RunColorChanging(app);
            }
            else
            {
                MessageUtil.ShowWarning(“请检查线路是否连对。”);
            } 
        }

 

 

线颜色变化以及动画展示部分的代码如下所示 :

        /// <summary>
        /// 根据分析后底装备ID,把设备变色动画展示
        /// </summary>
        /// <param name=”visApp”></param>
        private void RunColorChanging(Visio.Application visApp)
        {
            Visio.Cell cell = visApp.ActiveDocument.Pages[1].PageSheet.get_Cells(“Scratch.A1”);
            int intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(cell.Formula));
            if (intValue == 1)
            {
                cell.Formula = “0”;
            }
            else
            {
                cell.Formula = “1”;
                isMovie = !isMovie;
            }
……………….

            int sequence = 1;
            foreach (int shapeId in AnalyzeShapeIdList)
            {
                Visio.Shape shape = VisDocument.Pages[1].Shapes.get_ItemFromID(shapeId);
                if (shape != null)
                {
                    if (intValue == 0)
                    {
                        shape.Text = sequence++.ToString(“D2”);//string.Format(“{0}({1})”, sequence++, shape.ID);//

                        VisioUtility.SetShapeLineColor(shape, VisDefaultColors.visDarkGreen);//有电(绿色)
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(500 * minFlowValue);
                    }
                    else
                    {
                        shape.Text = “”;
                        VisioUtility.SetShapeLineColor(shape, VisDefaultColors.visBlack);//无电(黑色)
                        System.Windows.Forms.Application.DoEvents();
                    }
                    
                    string equipType = VisioUtility.GetShapeCellValue(shape, “设备类”);
                    if (!string.IsNullOrEmpty(equipType))
                    {
                        #region 单作用、双作用
                        if (equipType == “单作用” || equipType == “双作用”)
                        {
                            string minValue = “Width*0.25”;
                            string maxValue = “Width*0.75”;
                            string cellName = “Controls.Row_1.X”;
                            try
                            {
                                if (shape.get_CellExistsU(cellName, (short)VisExistsFlags.visExistsAnywhere) != 0)
                                {
                                    short i = shape.get_CellsRowIndex(cellName);
                                    Visio.Cell typeCell = shape.get_CellsSRC((short)VisSectionIndices.visSectionControls, i, (short)VisCellIndices.visCtlX);
                                    if (intValue == 0)
                                    {
                                        ThreadParameterInfo param = new ThreadParameterInfo();
                                        param.Cell = typeCell;
                                        param.ScratchCell = cell;

                                        Thread thread = new Thread(new ParameterizedThreadStart(HuoSaiMoving));
                                        thread.Start(param);
                                    }
                                    else
                                    {
                                        typeCell.Formula = VisioUtility.StringToFormulaForString(minValue);
                                        System.Windows.Forms.Application.DoEvents();
                                        //Thread.Sleep(500 * minFlowValue);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                LogHelper.Error(ex);
                            }
                        } 
                        #endregion
                    }
                }
                
            }
        }

 

 

个中我们注意到了,活塞运动时一个独门的线程进行拍卖的,如下所示

Thread thread = new Thread(new ParameterizedThreadStart(HuoSaiMoving));
thread.Start(param);

 

 

活塞运动是在路线联通后,继续循环进行动画的显示的,因为其是单身一个线程进行拍卖操作,通过判断标识来兑现动画的终止控制的,具体处理活塞动画的效用实现代码如下所示:

图片 3图片 4代码

        private void HuoSaiMoving(object obj)
        {
            ThreadParameterInfo objParam = obj as ThreadParameterInfo;
            Visio.Cell scratchCell = objParam.ScratchCell;
            Visio.Cell typeCell = objParam.Cell;
            int intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(scratchCell.Formula));
            while (intValue == 1 && isMovie)
            {
                string minValue = “Width*0.25”;
                string maxValue = “Width*0.75”;
                //Visio.Cell typeCell = objCell as Visio.Cell;
                if (typeCell != null)
                {
                    string currentValue = “”;
                    //增加
                    for (int k = 1; k <= 10; k++)
                    {
                        currentValue = string.Format(“Width*0.25 + Width*{0}”, 0.05 * k);
                        typeCell.Formula = VisioUtility.StringToFormulaForString(currentValue);
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(50);
                    }
                    //减少
                    for (int k = 1; k <= 10; k++)
                    {
                        currentValue = string.Format(“Width*0.75 – Width*{0}”, 0.05 * k);
                        typeCell.Formula = VisioUtility.StringToFormulaForString(currentValue);
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(50);
                    }
                }
                intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(scratchCell.Formula));
            }
        }

 

 Visio应用曲高和寡,代码贴图众口难调;不求一鸣惊人,但求潜移默化。