Tag: 线

沿对角线移动鼠标

我可以使用什么样的数学算法来计算移动鼠标的路径? 我只想拥有这种类型的function: animateMouseDiag(int X, int Y){ //Move mouse 1 step towards goal, for loop most likely, from the current Mouse.Position Thread.Sleep(1); } 例如,如果我给它animateMouseDiag(100,300),它会将鼠标100向右移动300并向下移动,但是在对角线上,而不是在“L”中向右移动。 类似地,如果我给它(-50,-200)它将沿着对角线路径移动到那些相对坐标(向左50和向上200)。 谢谢! (顺便说一下,这是一个alt帐户,因为我觉得我是一个白痴问我的主要基础高中数学。我只是无法将其翻译成编程。) 编辑:我想出了这个: public static void animateCursorTo(int toX, int toY) { double x0 = Cursor.Position.X; double y0 = Cursor.Position.Y; double dx = Math.Abs(toX-x0); double dy = Math.Abs(toY-y0); double sx, sy, err, […]

如何使用鼠标在图表控件中绘制图形

我的任务是使用鼠标在图表控件中绘制图形,并从图形中检索(X,Y)点。 我试着用鼠标绘制图形。 这是正常的Graph看起来像。 用鼠标绘图后,它看起来像: 我用来绘制图形的代码是: private void Form1_Load(object sender, EventArgs e) { chart1.ChartAreas[0].AxisX.Minimum =0170101; chart1.ChartAreas[0].AxisX.Maximum =0175951; chart1.ChartAreas[0].AxisY.Minimum=0780101; chart1.ChartAreas[0].AxisY.Maximum=0785951; double range = chart1.ChartAreas[0].AxisX.Maximum – chart1.ChartAreas[0].AxisX.Minimum; chart1.ChartAreas[0].AxisX.Interval = range / 5; range = chart1.ChartAreas[0].AxisY.Maximum – chart1.ChartAreas[0].AxisY.Minimum; chart1.ChartAreas[0].AxisY.Interval = range / 5; } private void chart1_MouseMove(object sender, MouseEventArgs e) { if (!(FirstPoint == null)) { Graphics g = […]

用鼠标移动绘制的线条

我试图通过用鼠标抓住它来移动绘制的线条。 该行已经使用Graphics.DrawLine(Pen P, Point A, Point B)绘制。 创建Line并在表单上绘制它绝对没有问题。 我试过了: 将行添加到GraphicsPath – 这甚至不绘制OnPaint行。 检查MouseEventArgs e.Location是否与一些基本代数一致(我现在扔掉的计算) 总结一下:我想抓住线并将其拖到某处,但我甚至无法检查e.Location是否在线上,我该怎么做? 编辑:这是我使用GraphicsPath时代码的外观。 当我不使用GraphicsPath我有: if (s.thisShape == ShapeType.Line) { g.DrawLine(pen, s.p1, s.p2); } else { … }` 在drawingShapes方法中。 来自drawStuff:Usercontrol类: private void drawStuff_MouseDown(object sender, MouseEventArgs e) { pointRegion = e.Location; for (int i = 0; i < Shapes.Count; i++) { if (Shapes[i].Region.IsVisible(pointRegion)) { […]

exception处理 – 显示发生错误的行号?

可能重复: 在exception处理中显示行号 有人可以告诉我如何获取发生错误的代码的行号并将其显示到控制台? 其他信息,如文件名或方法名称将非常方便。

线光栅化:覆盖所有像素,无论线条渐变?

基本上,我想使用行算法来确定哪些单元格可以检查我的raycaster的碰撞。 Bresenham并不是很好,因为它使用统一厚度的方法,这意味着它忽略了至少半覆盖线的细胞。 根本不是很好,因为这意味着我的线路的某些部分没有被检查与单元格的交叉点,导致错误。 我似乎无法找到任何“粗线”算法,任何人都可以帮我找到一个? 格林:我想要什么。 红色:我目前拥有和不想要的东西。

C#Draw Line OnPaint()vs CreateGraphics()

问题:如何从OnPaint()方法以外的方法正确绘制winform? 附加信息:我现在的代码在OnPaint()方法中为TicTacToe游戏绘制了一些背景线。 然后我使用Mouse_Click事件并运行此代码显然是不正确的: private void TicTacToe_MouseClick(object sender, MouseEventArgs e) Graphics g = this.CreateGraphics(); g.DrawEllipse(this.penRed, this.Rectangle); 由于我不理解的原因,它确实绘制了圆圈,但是当最小化或移动窗体离开屏幕时,它会擦除​​圆圈而不是OnPaint()方法中的线条。

为什么我的坐标(1,1)从(0,1)开始?

我重写了边框控件,在我的重写OnRender中我做了: protected override void OnRender(System.Windows.Media.DrawingContext dc) { this.SnapsToDevicePixels = true; this.VisualEdgeMode = EdgeMode.Aliased; var myPen = new Pen(new SolidColorBrush(Colors.LightGray), 1); dc.DrawLine(myPen, new Point(1, 1), new Point(1, RenderSize.Height – 1)); return; 哪个给我这个结果: 题: 是否有人可以告诉我为什么我的代码从(0,1)开始绘制一条线,而假设从(1,1)开始就像用代码编写的那样? 我的DPI是96,96。 对于ref,这是我的xaml:

如何在C#窗体中绘制Zoomable图像

所以我正在实施一个项目,可以读取图像平移,缩放和做其他东西……一切顺利,直到我尝试用鼠标右键实现绘图。 问题是,当我画一条线时,图像上出现的线与我在屏幕上绘制的线不对应,这意味着它被移动了我知道它因为图像的重新resize和缩放,但是当我绘制时图像上的线条与其原始大小(图像)和平移也; 我没有问题。 这是代码。 首先,我点击浏览并选择图像时如何加载图像 Myimage = new Bitmap(ImagePath); resized = myImage.Size; imageResize(); pictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox_Paint); pictureBox.Invalidate(); imageResize函数执行以下操作: void imageResize() { //calculated the size to fit the control i will draw the image on resized.Height = someMath; resized.Width = someMath; } 然后在pictureBox_Paint事件的事件处理程序中我写道: private void pictureBox_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { // Create a local version […]

如何绘制更新行

我的目标非常简单。 想象一下,打开MSPaint,单击线条工具,按住鼠标,然后拖动它。 它会锚定您单击鼠标的起始坐标,并不断绘制并重新绘制一条线到当前位置。 除了我在C#中尝试这样做之外并没有像我希望的那样好。 [DllImport(“user32.dll”)] static extern IntPtr GetDC(IntPtr hWnd); [DllImport(“User32.dll”)] static extern int ReleaseDC(IntPtr hwnd, IntPtr dc); protected override void OnPaint(PaintEventArgs e) { endingPoint = GetMouseCoords(); DrawLine(startingPoint, endingPoint); } private void DrawLine(Point startingCoords, Point endingCoords) { IntPtr desktop = GetDC(IntPtr.Zero); Pen pen = new Pen(Brushes.Red, 3); using (Graphics g = Graphics.FromHdc(desktop)) { g.DrawLine(pen, startingCoords.X, […]

与AABB矩形线交叉?

优选地,不使用任何类型的循环,因为这将在游戏中使用。 我希望将一条线与一个任意大小的矩形相交。 但我也希望返回交叉点[s]。 这是可能的,我做了一些谷歌搜索,但仍然没有解决。 该线使用(x1,y1,x2,y2)定义。 矩形也有这两点。