1

在我的屏幕上是红色方块内的内容:

http://img854.imageshack.us/img854/2319/xo3i.jpg

我在游戏中使用它来绘制:

    using System.Drawing;
    using System.Runtime.InteropServices;
    ...
    [DllImport("user32.dll")]
    private static extern IntPtr FindWindow(String sClassName, String sAppName);
    ....
    IntPtr Hwnd = FindWindow("ClassName", "AppName");
    Graphics g = Graphics.FromHwnd(Hwnd);
    Pen myPen = new Pen(Color.Black, 4);
    Point P1 = new Point(100, 400);
    Point P2 = new Point(1300, 400);
    g.DrawLine(myPen, P1, P2);
    g.Dispose();

但是,这条线是在红色矩形内绘制的:

在此处输入图像描述

在此处输入图像描述


我的期望是:

在此处输入图像描述

在此处输入图像描述

  • 任何与问题相关的问题都这么说。
  • 我需要做什么我想做的事?我使用什么功能?
4

1 回答 1

0

您必须进行世界到屏幕计算才能将世界坐标转换为屏幕坐标。屏幕中的每个像素(屏幕坐标)在世界坐标中都有一个等效的 x、y,并且当您在游戏场景中移动屏幕时,这种关系会发生变化。

您想在世界坐标中从 x = 100, y = 400 开始绘制。如果你的屏幕中心在 x, y 并且你的屏幕分辨率是 800x600,那么代码应该是:

Point P1 = new Point(400, 300);
Point P2 = new Point(1600, 300);
g.DrawLine(myPen, P1, P2);
于 2020-02-08T14:53:06.737 回答