Tag: graphics

C#中高效的AABB /三角交叉

任何人都可以推荐任何公共AABB /三角交叉算法的CSharp高效端口。 我一直在看Moller的方法, 在这里抽象地描述,如果我要移植它,我可能会从这个C ++版本开始 。 Mike Vandelay的这个C ++库似乎也是一个很好的起点。 ……或者……任何其他“轮子”可以采用Vector3的三角形并告诉我它是否与AABB相交,相对有效。 似乎有各种各样的算法,但大多数似乎是用c ++编写的,或者只是在白皮书中抽象地描述,我需要针对我们的应用程序的ac#特定实现。 效率不是关键,但c#是。 (虽然效率当然也很好; p) 任何C#选项,在我通过“数学”端口之前;)将不胜感激! 谢谢。

可以推荐使用ZedGraph图表库吗?

我正在为我的公司开发一个项目,我需要在研究股票市场的过程中将一些不同类型和平均复杂度的图表集成到C#中。 我在互联网上找到了这个免费的图书馆, ZedGraph 。 如果你碰到它,你建议使用它吗? 它的支持程度如何?

画一条平行线

我有x1,y1和x2,y2,形成一个线段。 如何得到另一条线x3,y3-x4,y4,它与第一条线平行,如图所示。 我可以简单地将n添加到x1和x2以获得平行线,但它不是我想要的。 我希望线条在图片中平行。

制作按钮图?

我如何做以下我不是要求具体的代码,但我需要一些方向,因为我已经绞尽脑汁待了好几个星期。 我只想制作一张例如地图。 美国和每个州都是不同的图片或区域,可以被鼠标点击和点击。 我试过用png和透明胶片玩,但我已经走到了尽头。 更雄心勃勃的是,我想把州首府的标签拖到每个州,然后将它们放在那里然后有一个过程,如果标签/大写与其正确的状态匹配,否则它不是。 我已经尝试过GIS(?)我想做这个C#但是到目前为止我无法获得如何做到这一点。 有人可以帮忙吗? 这在C#中是否太难了? 我应该使用另一种方法吗? 请问是什么方法?

裁剪图像有时是错误的区域

我正在使用jQuery-cropbox在Web应用程序上裁剪图像。 一切都在大部分时间内流畅运行,但有时生成的图像是错误的,就好像裁剪是用错误的坐标应用的。 例如,请考虑以下图像 : 在cropbox中,我缩放并拖动,直到我得到: 但是当我点击裁剪按钮时,它给了我: 这是裁剪代码: private Bitmap CropImage(Image img, Rectangle rect) { Bitmap newImg = new Bitmap(rect.Width, rect.Height); Graphics g = Graphics.FromImage(newImg); g.DrawImage(img, -rect.X, -rect.Y); return newImg; } //… // save image var streamOut = new MemoryStream(); Bitmap newImg = CropImage(oldImg, rect); newImg.Save(streamOut, ImageFormat.Png); oldImg是先前发布的图像,是我用来裁剪的坐标。 我当然检查了rect中的坐标,它们是正确的。 作为参考,为了获得结果,如果坐标是(那些可能不完全准确,我从第二次测试中取得它们,所以我当然放置了不同的图片): x: 47 y: 94 w: 150 […]

如何将一个图形对象复制到另一个

我试图将一个图形对象的内容复制到另一个图形对象,但我唯一能够找到的是基于使用GDI32.DLL ,我宁愿避免使用,如果可能的话。 有谁知道如何使用托管代码这是否可行? 我不介意答案是在C#还是VB.Net。 这是我目前拥有的: Private Sub CopyGraphics() Dim srcPic As Graphics = pnl.CreateGraphics Dim srcBmp As New Bitmap(pnl.Width, pnl.Height, srcPic) Dim srcMem As Graphics = Graphics.FromImage(srcBmp) Dim HDC1 As IntPtr = srcPic.GetHdc Dim HDC2 As IntPtr = srcMem.GetHdc BitBlt(HDC2, 0, 0, pnl.Width, pnl.Height, HDC1, 0, 0, 13369376) pnlDraw.BackgroundImage = srcBmp ‘Clean Up code omitted… […]

绘制平行线

我有一组代表一条线的点。 它可能是封闭的形状或开放的形状。 我需要绘制一条平行线,除了原始线之外没有任何交叉点。 我有以下代码来返回生成的行。 我在形状的角度有问题。 有些观点超过原始线。 我的代码是: PointF[] GetParrarel(PointF[] lst, double width, float distance) { List final = new List(); width = width + distance; for (int i = 0; i 0) { if (dy == 0) { first.Y += (float)width; second.Y += (float)width; } first.X += (float)width; second.X += (float)width; } else if (dx […]

奇怪地使用Graphics.FillPath绘制GraphicsPath

我编写了一些代码,它创建了一个圆角矩形GraphicsPath ,基于自定义结构BorderRadius (允许我定义矩形的左上角,右上角,左下角和右下角),以及初始的Rectangle本身: public static GraphicsPath CreateRoundRectanglePath(BorderRadius radius, Rectangle rectangle) { GraphicsPath result = new GraphicsPath(); if (radius.TopLeft > 0) { result.AddArc(rectangle.X, rectangle.Y, radius.TopLeft, radius.TopLeft, 180, 90); } else { result.AddLine(new System.Drawing.Point(rectangle.X, rectangle.Y), new System.Drawing.Point(rectangle.X, rectangle.Y)); } if (radius.TopRight > 0) { result.AddArc(rectangle.X + rectangle.Width – radius.TopRight, rectangle.Y, radius.TopRight, radius.TopRight, 270, 90); } else { […]

在C#中模拟雷达的最佳方法是什么?

我的表格中有一个combobox内的图片框,其中雷达图片设置为背景图片。 我的目的是在运行时动态加载雷达区域内的微小Jpeg图像(重叠),但我不确定实现这一目标的最佳方法。 欢迎所有疯狂的想法(但我更喜欢理智的做法)。 谢谢你们。

从图像创建1bpp蒙版

如何在C#中使用GDI从图像创建每像素1位掩码? 我试图创建掩码的图像保存在System.Drawing.Graphics对象中。 我见过在循环中使用Get / SetPixel的例子,这些例子太慢了。 我感兴趣的方法是只使用BitBlits的方法,就像这样 。 我只是不能让它在C#中工作,任何帮助都非常感谢。