明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 819|回复: 7

[图形系统] CAD坐标转为屏幕坐标

[复制链接]
发表于 2023-12-26 09:15 | 显示全部楼层 |阅读模式
本帖最后由 d1742647821 于 2023-12-26 09:37 编辑
  1. [CommandMethod(nameof(TEST))]
  2. public static void TEST()
  3. {
  4.     var doc = Acap.DocumentManager.MdiActiveDocument;
  5.     var ed = doc.Editor;
  6.     var r1 = ed.GetPoint("\n选择点");
  7.     if (r1.Status != PromptStatus.OK)
  8.         return;
  9.     var wcsPoint = r1.Value.TransformBy(ed.CurrentUserCoordinateSystem);

  10.     var hWnd = doc.Window.Handle;
  11.     var vp = (short)Acap.GetSystemVariable("CVPORT");
  12.     System.Windows.Point wdPt = ed.PointToScreen(wcsPoint, vp);
  13.     var scale = Graphics.FromHwnd(IntPtr.Zero).DpiX / 96.0f;

  14.     var drawingPt = new System.Drawing.Point(Convert.ToInt32(wdPt.X * scale),Convert.ToInt32(wdPt.Y * scale));
  15.     ClientToScreen(hWnd, ref drawingPt);

  16.     Env.Editor.WriteMessage(drawingPt.X + "-" + drawingPt.Y);
  17. }

  18. [DllImport("user32.dll")]
  19. public static extern bool ClientToScreen(IntPtr hWnd, ref System.Drawing.Point pt);
复制代码

CAD坐标转为屏幕坐标

评分

参与人数 1明经币 +1 收起 理由
枫叶棋语 + 1

查看全部评分

发表于 2023-12-26 12:14 | 显示全部楼层
这个可以理解为wcs转到ucs坐标么?
 楼主| 发表于 2023-12-26 14:22 | 显示全部楼层
Bao_lai 发表于 2023-12-26 12:14
这个可以理解为wcs转到ucs坐标么?

完全不是一回事
发表于 2023-12-26 16:42 | 显示全部楼层
逆转呢?快点快点,ifox的填充边界事件上面缺少这个测试
发表于 2023-12-27 15:50 | 显示全部楼层
var scale = Graphics.FromHwnd(IntPtr.Zero).DpiX / 96.0f;   

这个96哪里来的?显示比例不一样,DPI设置不一样呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2023-12-27 17:47 | 显示全部楼层
guohq 发表于 2023-12-27 15:50
var scale = Graphics.FromHwnd(IntPtr.Zero).DpiX / 96.0f;   

这个96哪里来的?显示比例不一样,DPI设 ...

不用动它,这一步就是为了计算比例,100的时候是96,所以除以96就可以计算出这个比例值
发表于 2024-2-2 13:15 | 显示全部楼层
太给力了 不错呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 00:50 , Processed in 0.362641 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表