乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 65|回复: 3

[求助]如何将DBText定位并缩放合适大小到屏幕中央

[复制链接]

9

主题

16

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2009-10-29 15:09:00 | 显示全部楼层 |阅读模式
如何将DBText定位并缩放合适大小到屏幕中央,其中缩放合式大小指比如说整个屏幕能放15同样的DBText;
在开发文档中有一个zoom方法,真不知这些参数如何设置;
我是新学,一些概念真不懂,谢谢了;
回复

使用道具 举报

9

主题

16

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2009-10-29 15:12:00 | 显示全部楼层
就是缩放到整个屏幕一行能放15个“中国人民”字样,请高手指点
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-10-29 17:25:00 | 显示全部楼层
简单的办法就是调用Zoom命令
或者试下下面的ZoomWindow
  1.         public enum UcsCode
  2.         {
  3.             Wcs = 0,
  4.             Ucs,
  5.             MDcs,
  6.             PDcs
  7.         }
  8.         [DllImport("acad.exe", CallingConvention = CallingConvention.Cdecl)]
  9.         private static extern int acedTrans(
  10.             double[] point,
  11.             IntPtr fromResbuf,
  12.             IntPtr toResbuf,
  13.             int displacement,
  14.             double[] result
  15.         );
  16.         public static double[] Trans(double[] point, UcsCode from, UcsCode to)
  17.         {
  18.             ResultBuffer rbfrom = new ResultBuffer(new TypedValue((int)LispDataType.Int16, from));
  19.             ResultBuffer rbto = new ResultBuffer(new TypedValue((int)LispDataType.Int16, to));
  20.             double[] res = new double[2];
  21.             acedTrans(point, rbfrom.UnmanagedObject, rbto.UnmanagedObject, 0, res);
  22.             return res;
  23.         }
  24.         public static Point2d Wcs2Dcs(Point3d point, bool atPaperSpace)
  25.         {
  26.             double[] res =
  27.                 Trans(
  28.                     point.ToArray(),
  29.                     UcsCode.Wcs, atPaperSpace ? UcsCode.PDcs : UcsCode.MDcs);
  30.             return new Point2d(res);
  31.         }
  32.         public void ZoomWindow(Point3d minPoint, Point3d maxPoint)
  33.         {
  34.             Document doc = Application.DocumentManager.MdiActiveDocument;
  35.             Editor ed = doc.Editor;
  36.             ViewTableRecord cvtr = ed.GetCurrentView();
  37.             ViewTableRecord vtr = new ViewTableRecord();
  38.             vtr.CopyFrom(cvtr);
  39.             Point3d[] oldpnts = new Point3d[] { minPoint, maxPoint };
  40.             Point3d[] pnts = new Point3d[8];
  41.             Point2d[] pnt2ds = new Point2d[8];
  42.             for (int i = 0; i < 2; i++)
  43.             {
  44.                 for (int j = 0; j < 2; j++)
  45.                 {
  46.                     for (int k = 0; k < 2; k++)
  47.                     {
  48.                         int n = i * 4 + j * 2 + k;
  49.                         pnts[n] = new Point3d(oldpnts[i][0], oldpnts[j][1], oldpnts[k][2]);
  50.                         pnt2ds[n] = Wcs2Dcs(pnts[n], false);
  51.                     }
  52.                 }
  53.             }
  54.             double xmin, xmax, ymin, ymax;
  55.             xmin = xmax = pnt2ds[0][0];
  56.             ymin = ymax = pnt2ds[0][1];
  57.             for (int i = 1; i < 8; i++)
  58.             {
  59.                 xmin = Math.Min(xmin, pnt2ds[i][0]);
  60.                 xmax = Math.Max(xmax, pnt2ds[i][0]);
  61.                 ymin = Math.Min(ymin, pnt2ds[i][1]);
  62.                 ymax = Math.Max(ymax, pnt2ds[i][1]);
  63.             }
  64.             vtr.Width = xmax - xmin;
  65.             vtr.Height = ymax - ymin;
  66.             vtr.CenterPoint = pnt2ds[0] + (pnt2ds[7] - pnt2ds[0]) / 2;
  67.             ed.SetCurrentView(vtr);
  68.             ed.Regen();
  69.         }

回复

使用道具 举报

3

主题

18

帖子

3

银币

初来乍到

Rank: 1

铜币
30
发表于 2010-9-30 15:26:00 | 显示全部楼层
学习
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 03:25 , Processed in 1.780976 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表