如何在pictureBox上画一个点?

时间:2014-03-11 03:21:24

标签: c#

我有一个名为Form2的表单,其中包含一个picturebox1。

从一个单独的类文件中,我从我的管道接收信息; charX,charY,map,mapX,& mapY。

如果您查看我附上的图片(右键单击并查看大图),您可以看到我的角色所在的地图上有一张迷你地图,它也会始终显示我的角色在迷你中的移动通过显示黄点来映射。

现在,我的Form2中有一个函数,如果我的角色输入了一个新的地图,就会从我单独的类文件中调用它。这个函数的作用是更新我的pictureBox1 imge-location以对应游戏中正确的迷你地图。它几乎是游戏中的外部迷你地图。

问题是它只显示正确的迷你地图图像,没有角色移动。

现在,这是我的代码片段。

正如你所读到的,如果游戏中没有迷你地图,我的pictureBox中没有迷你地图(来自我的服务器,404错误);因此,它在显示我的错误图像时将表单大小设置回默认值(152,110)。如果游戏中有迷你地图,则功能会更新pictureBox中的图片(通过抓取我的服务器),然后在上面的pictureBox1代码中,相应地设置表单大小(使其变得美观和紧凑,没有额外的空间)。

现在,我想要实现的是实时移动(我将使用我的管道提供的charX& Y信息)。

我想在我的pictureBox顶部绘制一个小黄点(如图中所示),它总是相应地绘制到charX& Y.

我表单上的pictureBox始终设置为0,0。

的位置

我的问题是;如何在我的pictureBox上一致地绘制一个点(使用charX& Y)但是使用表格的位置(我猜)(例如:pictureBox位置是0,0)?

1 个答案:

答案 0 :(得分:0)

我不太确定,但多亏了dotTutorials,他告诉我一次覆盖图形

这可能令人困惑,但可能有效

    point a = new point(x,y);
    pen p = new pen(colour);
    Graphics g = Graphics.FromHwnd(Process.GetCurrentProcess.MainWindowHandle);
    g.drawline(p,a,a);

或者您可以在表单上使用绘制位图(bmp图片)

    int screen_width = 500;
    int screen_height = 500;

    // Your image..
    var crosshair_bitmap = (Bitmap)Image.FromFile("C:\Example\CrosshairImage.png");

    Graphics g = Graphics.FromHwnd(Process.GetCurrentProcesses.MainWindowHandle);
    g.DrawImage(crosshair_bitmap, new Point(x, y);

全部归功于dotTutorials

抱歉错误

POOM