System.Drawing

kulow

New Member
Is it possible to draw text that follows a path like you can with SVG? I built an SVG page that management wants converted to .NET; I am having a hard time achieving the same functionality. If you have an SVG viewer (http://www.adobe.com/svg/viewer/install/main.html), here is the code I am trying to convert (kinda long). Copy and save as *.svg:<BR>--------------------------------------------------------------<BR><BR><svg width="900" height="450" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="onLoad(evt)"><BR><BR><text font-family="Arial" fill="rgb(221,238,255)" font-size="10" font-weight="bold" x="10" y="10">Test Page</text><BR><BR><script language="javascript"><BR><!--<BR> var svgDoc <BR> <BR> function onLoad(evt){<BR> //Scale entire image, based on screen resolution<BR> var svgScale<BR> var objMainG<BR> <BR> window.screen.width>=1024?svgScale=1.5:svgScale=1;<BR> svgDoc = evt.getCurrentNode().getOwnerDocument();<BR> objMainG = svgDoc.getElementById('mainG');<BR> objMainG.setAttribute('transform', 'scale('+svgScale+')');<BR><BR> <BR> }<BR><BR> function showDesc(evt, elmId){<BR> //alert(elmId);<BR> var svgDoc = evt.target.ownerDocument;<BR> var objDesc = svgDoc.getElementById('Welcome');<BR> objDesc.setAttribute('visibility', 'hidden');<BR> <BR> objDesc = svgDoc.getElementById(elmId);<BR> objDesc.setAttribute('visibility', 'visible');<BR> }<BR> <BR> function restore(evt, elmId){<BR> var svgDoc = evt.target.ownerDocument;<BR> var objDesc = svgDoc.getElementById(elmId);<BR> objDesc.setAttribute('visibility', 'hidden');<BR> <BR> objDesc = svgDoc.getElementById('Welcome');<BR> objDesc.setAttribute('visibility', 'visible');<BR> }<BR>//--><BR></script><BR> <!--Scale entire image, based on clients current resolution--><BR> <g id="mainG"><BR><BR> <defs><BR> <!--Fill for Logo background/sphere--><BR> <radialGradient id="radGrad" cx="150" cy="150" r="150" fx="150" fy="150" gradientUnits="userSpaceOnUse"><BR> <stop offset="5%" style="stop-color:#ddeeff"/><BR> <stop offset="95%" style="stop-color:#336699"/><BR> </radialGradient><BR> <BR> <!--Path definition for Links Text TOP--><BR> <path id="LinksPathTop" d="m25,150 a50,50 0 0,1 250,0" fill="none" stroke="none" /><BR> <!--Path definition for Links Text BOTTOMP--><BR> <path id="LinksPathBottom" d="m15,150 a50,50 0 0,0 270,0" fill="none" stroke="none" /><BR> <BR> <BR> <!--Description Box--><BR> <path id="descBox" stroke="white" stroke-width="1" stroke-opacity="0.75" fill="white" fill-opacity="0.1" <BR> d="m320,20 l268,0 a10,10 0 0,1 10,10 l0,100 a10,10 0 0,1 -10,10 l-268,0 <BR> a10,10 0 0,1 -10,-10 l0,-100 a10,10 0 0,1 10,-10" /> <BR> <BR> <!--Filter for Diamonds--><BR> <filter id="Diamonds" filterUnits="objectBoundingBox"><BR> <feGaussianBlur in="SourceAlpha" stdDeviation="2" result="blur"/><BR> <feOffset in="blur" dx="3" dy="3" result="offsetBlur"/><BR> <feSpecularLighting in="blur" surfaceScale="5" specularConstant=".75" <BR> specularExponent="60" lighting-color="#bbbbbb" <BR> result="specOut"><BR> <fePointLight x="-5000" y="-10000" z="25000"/><BR> </feSpecularLighting><BR> <feComposite in="specOut" in2="SourceAlpha" operator="in" result="specOut"/><BR> <feComposite in="SourceGraphic" in2="specOut" operator="arithmetic" <BR> k1="0" k2="1" k3="1" k4="0" result="litPaint"/><BR> <feMerge><BR> <feMergeNode in="offsetBlur"/><BR> <feMergeNode in="litPaint"/><BR> </feMerge><BR> </filter><BR> <BR> <!--Tag Line Text--><BR> <text id="tagLine" x="350" y="275" fill="white" font-family="arial" font-size="9" font-style="italic">expanding the power of data</text><BR> </defs><BR> <BR> <desc>Elity InSight Homepage</desc><BR> <BR><!--Image background with radial fill--><BR> <rect fill="url(#radGrad)" x="0" y="0" height="300" width="600"/><BR><BR><!--TEXTPATHS--><BR> <!--TOP OR ARC--><BR> <g transform="rotate(10.9318242719464 150 150)"><BR> <use xlink:href=http://aspmessageboard.com/archive/index.php/"#LinksPathTop" fill="none"/><BR> <text font-family="Arial" fill="rgb(221,238,255)" font-size="12" font-weight="bold"><BR> <textPath xlink:href="#LinksPathTop"> * <a id="0" xlink:href="../RuleManager/RM.asp" onmouseover="showDesc(evt, 'Components')" onmouseout="restore(evt, 'Components')">Components</a> * <a id="1" xlink:href="../Connection/dsSelectConnections.asp" onmouseover="showDesc(evt, 'Connections')" onmouseout="restore(evt, 'Connections')">Connections</a> * <a id="2" xlink:href="../DataSource/dataTable.asp" onmouseover="showDesc(evt, 'Data Sources')" onmouseout="restore(evt, 'Data Sources')">Data Sources</a> * <a id="3" xlink:href="../Test Environment/tevSelect.asp?action=test" onmouseover="showDesc(evt, 'Engine')" onmouseout="restore(evt, 'Engine')">Engine</a> * <a id="4" xlink:href="../FilterManager/FilterManagerMain.asp" onmouseover="showDesc(evt, 'Filters')" onmouseout="restore(evt, 'Filters')">Filters</a></textPath><BR> </text><BR> </g><BR> <!--BOTTOM OF ARC--><BR> <g transform="rotate(-37.096896916254 150 150)"><BR> <use xlink:href="#LinksPathBottom" fill="none"/><BR> <text font-family="Arial" fill="rgb(221,238,255)" font-size="12" font-weight="bold"><BR> <textPath xlink:href="#LinksPathBottom"><a id="5" xlink:href="../LabelManager/LabelList.asp" onmouseover="showDesc(evt, 'Labels')" onmouseout="restore(evt, 'Labels')">Labels</a> * <a id="6" xlink:href="../reporting/reportingMenu.asp?mode=preComp" onmouseover="showDesc(evt, 'Reports')" onmouseout="restore(evt, 'Reports')">Reports</a> * <a id="7" xlink:href="../vrManager/manageUsers.asp" onmouseover="showDesc(evt, 'Users')" onmouseout="restore(evt, 'Users')">Users</a> * <a id="8" xlink:href="../Rulesets/rsManagerMain.asp" onmouseover="showDesc(evt, 'Workspaces')" onmouseout="restore(evt, 'Workspaces')">Workspaces</a> * </textPath><BR> </text><BR> </g><BR><!--END TEXTPATHS--><BR> <BR><!--ELITY LOGO--><BR> <!--top row--><BR> <path d="m65,150 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <path d="m95,120 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <path d="m125,90 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <BR> <!--middle row--><BR> <path d="m95,180 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <path d="m125,150 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <!--Red Diamond pops out--><BR> <path d="m185,90 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(200,0,33)" filter="URL(#Diamonds)"/><BR> <BR> <!--bottom row--><BR> <path d="m125,210 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <path d="m155,180 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR> <path d="m185,150 l25,-25 l25,25 l-25,25z" stroke="black" stroke-width="2" fill="rgb(153,153,153)" filter="URL(#Diamonds)"/><BR><!--END ELITY LOGO--><BR><BR><!--Message Box for link description--><BR> <g><BR> <use xlink:href="#descBox"/><BR> </g><BR> <BR><!--DESCRIPTION BOX MESSAGES--><BR> <!--Welcome--><BR> <text id="Welcome" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="12" style="letter-spacing: 2px" fill="rgb(221,238,255)" visibility="visible"><BR> Welcome to Elity InSight!<BR> </text><BR> <!--Components--><BR> <text id="Components" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> Components are the logic structures that InSight uses<BR> <tspan x="320" dy="1.5em">to analyze the transactions from an external system.</tspan><BR> </text><BR> <!--Connections--><BR> <text id="Connections" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> Connections are used to stage raw transactional files<BR> <tspan x="320" dy="1.5em">before they are processed by the engine. Once the</tspan><BR> <tspan x="320" dy="1.5em">connection is completed, the file is passed to the queue</tspan><BR> <tspan x="320" dy="1.5em">to be processed by the engine.</tspan> <BR> </text><BR> <!--Data Sources--><BR> <text id="Data Sources" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> InSight processes data from any of three Data Source<BR> <tspan x="320" dy="1.5em">types either by polling specific, user-defined databases,</tspan><BR> <tspan x="320" dy="1.5em">or by reading files fed to an executable within the</tspan><BR> <tspan x="320" dy="1.5em">application. It is the InSight Administrator&apos;s responsibility</tspan><BR> <tspan x="320" dy="1.5em">to explicitly define all Data Sources and groups.</tspan><BR> </text><BR> <!--Engine--><BR> <text id="Engine" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> The InSight Engine Manager allows the system<BR> <tspan x="320" dy="1.5em">administrator to start, stop, and shut down the</tspan><BR> <tspan x="320" dy="1.5em">production engines, test new components,</tspan><BR> <tspan x="320" dy="1.5em">monitor performance, and view error logs for</tspan><BR> <tspan x="320" dy="1.5em">individual Trigger Systems.</tspan> <BR> </text><BR> <!--Filters--><BR> <text id="Filters" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> Filters are used to restrict the display of components<BR> <tspan x="320" dy="1.5em">shown in the Components List screen. When you select</tspan><BR> <tspan x="320" dy="1.5em">one of the standard filter types</tspan><BR> <tspan x="320" dy="1.5em">(which correspond to the various component types)</tspan><BR> <tspan x="320" dy="1.5em">only components matching the filter type are displayed</tspan><BR> <tspan x="320" dy="1.5em">in the screen. InSight also has the capability of allowing</tspan><BR> <tspan x="320" dy="1.5em">users to design custom filters.</tspan> <BR> </text> <BR> <!--Flags & Counters--><BR> <text id="Flags & Counters" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> Flags and Counters modify the conditions under<BR> <tspan x="320" dy="1.5em">which an associated Trigger System will fire or</tspan><BR> <tspan x="320" dy="1.5em">accumulate the number of times the system does fire.</tspan><BR> </text> <BR> <!--Labels--><BR> <text id="Labels" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> Labels and Label Items are used to categorize rules<BR> <tspan x="320" dy="1.5em">for sorting and organization purposes. They are a</tspan><BR> <tspan x="320" dy="1.5em">passive feature meaning that their use is optional,</tspan><BR> <tspan x="320" dy="1.5em">and when present they do not affect</tspan><BR> <tspan x="320" dy="1.5em">Trigger System outcomes.</tspan> <BR> </text><BR> <!--Reports--><BR> <text id="Reports" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> InSight can generate and view any of the available<BR> <tspan x="320" dy="1.5em">report types and distribute them by any of several</tspan><BR> <tspan x="320" dy="1.5em">methods. The report design-parameter combinations</tspan><BR> <tspan x="320" dy="1.5em">can be saved as personal defaults and re-used when</tspan><BR> <tspan x="320" dy="1.5em">creating future reports.</tspan><BR> </text><BR> <!--Users--><BR> <text id="Users" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> The User Editor is the tool provided to manage the<BR> <tspan x="320" dy="1.5em">user profile feature for the InSight user base. The</tspan><BR> <tspan x="320" dy="1.5em">user profile items must be assigned at the time the</tspan><BR> <tspan x="320" dy="1.5em">user is admitted to the system. Only an</tspan><BR> <tspan x="320" dy="1.5em">administrator can add or change a user&apos;s log on or</tspan> <BR> <tspan x="320" dy="1.5em">password or make changes to the profile.</tspan> <BR> </text><BR> <!--Workspaces--><BR> <text id="Workspaces" x="320" y="40" font-family="Arial" <BR> font-weight="bold" font-size="10" fill="rgb(221,238,255)" visibility="hidden"><BR> All Components used by InSight are organized into<BR> <tspan x="320" dy="1.5em">Workspaces. Generally, Workspaces are used to</tspan> <BR> <tspan x="320" dy="1.5em">group systems having some common characteristic</tspan> <BR> <tspan x="320" dy="1.5em">or purpose.</tspan> <BR> </text> <BR><!--END DESCRIPTION BOX MESSAGES--><BR><BR><!--Tag Line/repeated/shift and transparency--><BR> <g transform="matrix(1 0 0 1 -30 -30)" fill-opacity="0.25"><BR> <use xlink:href="#tagLine"/><BR> </g><BR> <g transform="matrix(1 0 0 1 -20 -20)" fill-opacity="0.5"><BR> <use xlink:href="#tagLine" style="letter-spacing:1px"/><BR> </g><BR> <g transform="matrix(1 0 0 1 -10 -10)" fill-opacity="0.75"><BR> <use xlink:href="#tagLine" style="letter-spacing:2px"/><BR> </g><BR> <g><BR> <use xlink:href="#tagLine" style="letter-spacing:3px"/><BR> </g><BR><!--End tag Line--><BR></g><BR><text font-family="Arial" fill="black" font-size="10" x="10" y="10" style="letter-spacing:4px">InSight 3.5 Home Page by Christopher Nigro</text><BR></svg><BR>-----------------------------------------------------------------<BR
 
Back
Top