web图章的实现思路与示例代码(C#.NET).docVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
web图章的实现思路与示例代码(C#.NET)

web图章的实现思路与示例代码(C#.NET) 本文的重点在于探讨如何用C#在web页面上制作公司的图章,也就是生成图章图片。制作图章来说,主要是如何让字均匀的显示在弧线段上,那么一般的印章要么以圆或者椭圆为底图,不过这两者的算法大致相同,为了方便说明,如下就用相对简单的圆来举例说明,如果需要做椭圆的话,可以在我的基础上进行扩展,因为核心算法是一样的,相对于圆来说,椭圆求弧长以及各个字符的位置,这两点相对麻烦些,但是这两者都可找到相应的数学公式。 您可以参看如下地址。 /vb/net/Text_on_Path_with_VBNET.asp 由于印章的实现相对于这篇文章来说,相对简单多了,而且规律性很强,因此我自己考虑重新组织算法进行实现。 那么实现一个印章,大致步骤如下。 1. 计算字符串总长度,以及各个字符的长度; 2. 计算出字符串的起始角度; 3. 求出每个字符的所在的点,以及相对于中心的角度; 4. 绘制每个字符。 计算字符串总长度,以及各个字符的长度 这里需要用到“Graphics.MeasureString”和“Graphics.MeasureCharacterRanges”这两个方法,由于前者算出来的总长度有问题,所以需要后面进行重新计算(此外,这里我还考虑了字符最后显示方向)。 这部分的代码如下: /// summary /// Compute string total length and every char length /// /summary /// param name=sText/param /// param name=g/param /// param name=fCharWidth/param /// param name=fIntervalWidth/param /// returns/returns private float ComputeStringLength( string sText, Graphics g, float[] fCharWidth, float fIntervalWidth, Char_Direction Direction ) { // Init string format StringFormat sf = new StringFormat(); sf.Trimming = StringTrimming.None; sf.FormatFlags = StringFormatFlags.NoClip | StringFormatFlags.NoWrap | StringFormatFlags.LineLimit; // Measure whole string length SizeF size = g.MeasureString( sText, _font, (int)_font.Style ); RectangleF rect = new RectangleF( 0f,0f, size.Width, size.Height ); // Measure every character size CharacterRange[] crs = new CharacterRange[sText.Length]; for( int i = 0; i sText.Length; i++ ) crs[i] = new CharacterRange( i, 1 ); // Reset string format sf.FormatFlags = StringFormatFlags.NoClip; sf.SetMeasurableCharacterRanges( crs ); sf.Alignment = StringAlignment.Near; // Get every character size Region[] regs = g.MeasureCharacterRanges( sText, _font, rect, sf ); // Re-compute whole string length with space interval width float fTotalWidt

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档