画布中的翻译点
我的应用程序中有一个滚动查看器,其中包含一个画布,其中我有一个树自定义的树结构.我正在尝试将特定节点元素的位置相对于滚动查看器的位置(我可以滚动),但我的尝试不起作用. 我尝试使用marker.TranslatePoint(new Point(0, 0), scrollViewer)(其中marker是画布中的元素),但这只是返回画布的位置,而不是标记.同样,如果我尝试marker.TranslatePoint(new Point(0, 0), layoutCanvas),我总是会得到(0,0),无论标记实际上在哪里. . 这是我的代码: var marker = m_Metadata[node].Marker; var location = marker.TranslatePoint(new Point(0, 0), scrollViewer); // This inorrectly gives the position of the canvas, rather
8 2024-04-26
编程技术问答社区
如何从鼠标坐标获得像素的正确位置?
我使用e.GetPosition获得鼠标坐标.当它接近0时,它返回正确的坐标,但是,我从图像的右上方单击越多,它得出的不准确. 我希望能够单击像素并更改其颜色.但是现在它更改了另一个像素,而不是我单击的一个像素(在0,0). private void image_MouseDown(object sender, MouseButtonEventArgs e) { // coordinates are now available in p.X and p.Y var p = e.GetPosition(image); System.Drawing.Color red = System.Drawing.Color.FromArgb(255, 0, 0); //converting to bitmap MemoryStream outStream = new MemoryStream();
20 2024-04-25
编程技术问答社区
如何将Bing地图的缩放级别设置为刚好宽到可以显示所有推针?
当我将Pushpins添加到bing地图时,我希望缩放级别自动更新为"最佳拟合" - "最接近"视图中的"最接近"的视图,该视图允许显示所有Pushpins. P> 我会想到,通过发现最远的最北端和最南端的纬度值,以及最远的东方和西部的纬度值来完成,然后以这些值的平均值为中心. 我的想法是将GeoCoordinates的列表传递给可以返回适当Zoomlevel的方法,并且可能是一个单独的方法,该方法将计算地图的中心点. 然后可以将这两个值用于地图的SetView(location, ZoomLevel)方法. 是否已经完成了,或者是否有一个可以处理此操作的Bing Maps调用? 解决方案 setView 接受位置列表,并将视图设置为这些位置的边界矩形.它确保所有位置都是可见的;您还需要在视图矩形上添加一些额外的边距,以确保所有Pushpins都可见. 在地图上有按PUSHPINS,意味着您已经有一个位置列表,或者如果没有地点列表,则可以轻松地获得所有这
12 2024-04-25
编程技术问答社区
Kinect SDK 1.7:将关节/光标坐标映射到屏幕分辨率上
不幸的是,我仍在使用新的Kinect SDK 1.7努力. 这个问题实际上与" 我的问题很简单:如果我有右手控制光标("新" Kinect Handpointer),并且它在屏幕的左上角,我希望它返回坐标(0,0).如果光标位于右下角,则坐标应分别为(1920,1080)当前的屏幕分辨率. 新的SDK具有每个手pointer(最多4)的所谓物理互动区(PIZ),它们用手po进行移动,并具有(对于左上)0.0至(对于右上方)1.0. 这基本上意味着,我不能将它们用于映射到屏幕上,因为它们根据Kinect前面的用户运动动态变化.至少,我找不到方法来完成这项工作. 然后,我通过SkeTonstram进行了尝试:跟踪右手的坐标,并在注册点击手势后立即在此特定点处点击事件触发器.我尝试使用以下代码: private void ksensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) {
16 2024-04-24
编程技术问答社区
用按钮作为坐标在PictureBox上画一条线
目前,我正在根据所示图像制作房间/办公室的搜索程序. 我在程序上遇到了麻烦,我想在2D地图上显示一条线路,其中将使用按钮连接行的每个坐标.但是在搜索房间之后,没有任何线路会出现. private void button2_Click(object sender, EventArgs e) { System.Drawing.Pen myPen; myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 5); System.Drawing.Graphics frmGraphics = pictureBox1.CreateGraphics(); if (textBox1.Text == "") { MessageBox.Show("Nothing to Search!", "", MessageBoxButton
4 2024-04-24
编程技术问答社区
裁剪图片,从X,Y得到矩形?
我正在尝试从整数x中裁剪C#,y坐标. 我只是不知道如何得到它? public void doCroppedImage(int pointX, int pointY) { Rectangle cropRect = //??? } 解决方案 您可以使用此代码.它返回裁剪的图像. public static Bitmap CropImage(Image source, int x,int y,int width,int height) { Rectangle crop = new Rectangle(x, y, width, height); var bmp = new Bitmap(crop.Width, crop.Height); using (var gr = Graphics.FromImage(bmp)) { gr.DrawImage(source, new Rectangle(0, 0, bmp.Widt
8 2024-04-24
编程技术问答社区
Abaqus 将曲面转化为集合
我一直在试图在模型中找到两个表面的中心(请参阅照片),但不设置.它们是元素表面(面),在查询中没有选项可以找到元素表面的中心,仅是元素集.查找节点集的中心也很好,但是我的节点集在工具 - > query->质量属性选项中没有出现. 而且我找不到将元素表面转换为元素集的选项. 我最终想要的是找到两个红色突出显示的表面的中心,并在它们之间划清界限.谁能帮我吗? 解决方案 如果您的表面包含元素,则可以随时检索它们并在其底部创建一个集合. m = mdb.models['myModel'] a = m.rootAssembly es_l5_inferior_elems = a.surfaces['ES_L5INFERIOR'].elements es_l5_inferior_elems_set = a.Set( name='ES_L5INFERIOR_ELEMS_SET', elements=es_l5_inferior_elems ) 如果您想获得节
18 2024-04-22
编程技术问答社区
2个地理坐标之间的中间点
我正在尝试开发一种涉及正常GPS坐标(纬度/经度)的算法.这意味着,我想给出两个点A(LAT1,LON1)和B(LAT2,LON2),我想插入与AB(同一ARC)线性的点C,并将其放置在距A和B的特定距离(例如:A到B距离为0.5公里,我希望C点在AB ARC上距离A距离0.1 km).如何计算C点C的坐标? 出于给出的目的,足以将地球作为一个完美的球形对象. 我已经找到了这篇文章,但是它只为中点提供了公式(并且我不完全理解它,以适应). 两个纬度和经度之间的中点 谢谢. 编辑:我尝试过,但给出了错误的答案 public static void normalizedPoint(double lat1, double lon1, double lat2, double lon2, double dist){ double constant=Math.PI/180; double angular = dist/6371; doubl
2 2024-04-22
编程技术问答社区
为屏幕上的点寻找坐标?
问题是我有一些形式显示的图形,例如矩形,我想在点越过该点字段时捕获.因此,我试图找到用于矩形的Corrrdinate,但是由于Thay是形式的坐标,因此剂量与鼠标位置不匹配. 所以我想知道是否有一种方法可以找到屏幕上的屏幕上的坐标,而不是在表单或控制器上找到? 解决方案 每个控制HS PointTofoo方法用于转换.请注意,您应该从您想要的位置的对象的父母那里致电: Point scrPos = this.PointToScreen(panel1.Location); 另外,您可以与: 获得面板的屏幕坐标 Point scrPos = panel1.PointToScreen(new Point(0,0)); 请注意,由于面板的边界大小,上面的两个示例可能会与不同的结果. 其他解决方案 如果通过在表单中​​调用this.CreateGraphics()来使用图形对象,则绘制矩形时使用的坐标应与compl off fimply off fimply
10 2024-04-21
编程技术问答社区
通过平移和缩放计算出正确的光标位置
我已经解决了这个问题已有大约一个小时了. 我有一个支持平移和缩放的视口,通过存储X和Y轴的偏移来处理平移.变焦只是从0.2到14的浮点. 我的问题是,我需要能够将用户点击在视口上的东西放置,但是当我放大和pan时,鼠标坐标是不正确的.我无法弄清楚如何正确计算鼠标坐标. 这是一个显示我到目前为止所拥有的图像: https://i.stack.imgur. com/3hkhh.png 您可以看到鼠标原点始终位于视口组件的左上角.您可以在图像的左下角看到pan x和y偏移量以及缩放值.我还添加了与视口左上角有关的鼠标坐标的示例. 现在,由于该图像中它当前已在我放置的对象中被缩放. 谢谢您的时间! 用解决方案编辑的解决方案: void Viewport_MouseClick(object sender, MouseEventArgs e){ Point mousePosition = new Point((int)((e.X - Pan.X
10 2024-04-21
编程技术问答社区
对列表中的2个点进行顺时针排序
基本上我有一个点列表,每个点都带有x,y,z(z始终相同). 例如: pointList.add(Point p = new Point(1, 2, 3)); 但是,我将它们分为顺时针顺序很难. 我知道中心,我知道每个列表中大约有600点. 我以前在Python上完成了这项工作,但是我在C#中遇到了麻烦. Python代码: pointlist.sort(key=lambda c:atan2(c[0], c[1])) 解决方案 不确定这是否会完成您的需求. points = points.OrderBy(x => Math.Atan2(x.X, x.Y)).ToList(); 不是很优化或其他任何东西,只需查看您的Python代码,并认为这将完成相同的操作. 注意:您可能需要using System.Linq除非您已经拥有它. 编辑: Sturm指出,逆转订单可能需要使它们"时钟" 实现此目的的一种方法是使用OrderB
4 2024-04-21
编程技术问答社区
纬度和经度到Vector3在三维球体上不对齐
我试图将纬度和经度转换为vector3格式.对于给定的纬度和经度,我想将其转换为vector3,其中标记对象将位于此vector3位置. 这是我的代码: void createLand() { double latitude_rad = (latitude) * Math.PI / 180; double longitude_rad = (longitude) * Math.PI / 180; double xPos = (radiusEarth * Math.Cos((latitude_rad)) * Math.Cos((longitude_rad))); double yPos = (radiusEarth * Math.Cos((latitude_rad)) * Math.Sin((longitude_rad))); double zPos = (radiusEarth * Math.Sin((latitude_rad)));
12 2024-04-20
编程技术问答社区
如何找到Black Pixel的位置
我正在从事一个奇怪的项目.我可以使用用来制作模具(来自金属)的激光切割器.我可以使用坐标对机器进行编程以切割特定图像,但是我想知道的是:我如何编写一个扫描的图像,该图像是黑色和白色的,并给我黑色的坐标.区域?我不介意它是否给每个像素,即使我只需要外线,我也可以做到这一点. 我已经搜索了一段时间,但是这个问题的单词很多,颜色和像素等结果很多,以至于我发现大量无关的信息.我想使用C ++或C#,但是我可以使用任何语言,包括脚本. 解决方案 如果我们假设扫描的图像是完美的白色且完美的黑色,则没有内在颜色,那么我们可以将图像作为RGB值的数组,而只需扫描0个值即可.如果值为0,则必须是黑色的吧?但是,图像可能不会是黑色的,所以您需要一些摆动的房间. 您所做的会看起来像这样: for(int i = 0; i
18 2024-04-20
编程技术问答社区
C#: 如何确定一个坐标是否在美国大陆?
我正在获得坐标-LAT/LON,我想检查这些坐标是否在美国大陆.在C#中有一种简单的方法吗?我可以将坐标转换为MGRS或UTM. 谢谢! 解决方案 哦,哇,他们只是为您服务: http://econym.org.uk.uk/gmap/gmap/states.xml /p> 美国各州的所有坐标! 建立多边形并应用任何多边形点算法. 经典算法是射线铸造,甚至很简单.让我知道您是否有任何麻烦. 现在,您有两个选择: 使用数据为每个状态构建一个多边形,并对每个状态都检查一个点.如果没有匹配,则不在美国. 但是,这种方法存在问题 - 我不知道数据是如何收集的,但是州之间的差距很小,甚至可能是轻微的重叠.因此,如果您只关心它是否通常在美国,我建议第二种方法: 使用数据为每个状态构建多边形,并使用算法将这些多边形组合到一个(例如联合).保存该多边形并将其与第一个方法一样使用.
10 2024-04-20
编程技术问答社区
验证纬度和经度
我想验证纬度和经度.现在,我只是检查以使该值不是空的,但是我希望验证它是有效的纬度或经度. 我该怎么做? 我的财产看起来像这样: public string Lat { get { return this._lat; } set { base.ValidationErrors.Remove("Lat"); if (String.IsNullOrWhiteSpace(value)) { this.ValidationErrors.Add("Lat", strings.Positions_Lat_Empty); } this._lat = value != null ? value.Trim() : null; } } public string Lng { get { retur
14 2024-04-17
编程技术问答社区
C#中的矩阵/坐标转换
我有一系列坐标,这些坐标反映了图像上已知的位置.让我们称其为模板图像.它具有唯一的条形码和方向标记(也位于坐标数组中). 将图像打印,扫描并馈回我的应用程序以要检测到.在打印和扫描过程中,图像可以通过三种方式进行转换.翻译,旋转和比例. 假设我可以在扭曲的图像上找到方向标记,我该如何使用矩阵转换来获取其余坐标的相对位置? 我在SO 上发布了这个问题我想要. 编辑 namespace MatrixTest { using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections.Generic; public static class Program { public static void Main () { Template template = new Template(); // Original template image. Doc
34 2024-04-16
编程技术问答社区
将坐标从EPSG 3857转换为4326
我在DB中有一个epsg 3857格式的坐标列表. 我需要在EPSG 4326中转换它们 我正在尝试使用dotspatial,但我的代码总是重新调整一个双重的无穷大. public double[] ConvertCoodinates() { double[] xy = new double[2]; xy[0] = 5085240.8300000000; xy[1] = 1530088.9600000000; //An array for the z coordinate double[] z = new double[1]; z[0] = 0; ProjectionInfo pStart = KnownCoordinateSystems.Geographic.World.WGS1984; pStart.AuthorityCode = 3857;
4 2024-04-15
编程技术问答社区
C# Foreach XML节点
我在XML文件上保存2维坐标,其结构类似于: 540:672 540:672 我可以打开XML文件并通过XMLTEXTREADER读取它,但是我该如何循环循环以某种格式和某种格式的初始节点和最终节点之间的时间属性和数据,类似于: : string initial = "540:672"; string final = "540:672"; int time = 78; 新代码: 我的新代码: //Read the XML file. XDocument xmlDoc = XDocument.Load("C:\\test.xml"); foreach (var coordinate in xmlDo
12 2024-04-14
编程技术问答社区
用c#将十进制坐标转换为度、分、秒
是否有人知道简单的简短代码可以不使用其他库来转换它? 解决方案 喜欢这样: double coord = 59.345235; int sec = (int)Math.Round(coord * 3600); int deg = sec / 3600; sec = Math.Abs(sec % 3600); int min = sec / 60; sec %= 60; 编辑:添加了一个ABS调用,使其也适用于负角度. 其他解决方案 您可以使用timespan :(棘手但起作用) double coord = 123.312312; var ts = TimeSpan.FromHours(Math.Abs(coord)) int degrees = Math.Sign(coord) * Math.Floor(ts.TotalHours); int minutes = ts.Minutes; int seconds = ts
12 2024-04-14
编程技术问答社区
矩阵/坐标转换顺序
我有两个点: Point [] original;和Point [] transformed; 这些转换的数组只是原始的副本,并应用了转换.示例: matrix.Rotate(5f); matrix.Scale(.8f, 1.1f); matrix.Translate(30f, 18f); matrix.TransformPoints(transformed); 原始点是已知的. 转换值是已知的. 应用转换的顺序 已知. 如何计算/推断转换顺序? 编辑 只有一轮转换. 一轮最多可以包含下面的三个转换. 唯一应用的转换是旋转,比例和翻译的任何组合. 给它一些现实世界的上下文,考虑具有具有已知点的图像.您打印图像,扫描并尝试再次阅读.该图像包含方向标记,使我能够计算扫描过程中应用的转换. 现在,蛮力的方法是: 阅读扫描图像. 计算扫描图像上的旋转. 在扫描的图像上旋转. 计算旋转图像的比例. 对旋转图像应用
8 2024-04-14
编程技术问答社区