我的第一个问题。而且我确信它很简单,但我无法在任何地方找到解决方案,我读过很多内容而无法理解我需要做什么:
System.Drawing.Bitmap
中,以便我可以访问GetPixel()方法PictureBox
)到目前为止我得到了什么:
Bitmap
- 这是有效的(代码中的 map_t )Graphic
,然后更改它。我不知道我错过了什么。 这是代码:MapCanvas是一个表单上的PictureBox,一切都在MouseMove中,因为我试图围绕指针做一些圆圈 - 没有用,所以我最终得到了这个代码,这也不起作用。我已经阅读了我能找到的每一个问题,没有任何帮助......这是代码:
namespace Projekt_innowacje
{
public partial class MapForm : Form
{
Bitmap map_t;
Bitmap map;
public MapForm()
{
InitializeComponent();
map_t = new Bitmap("map.gif", true);
map = new Bitmap(map_t.Width, map_t.Height);
MapCanvas.Image = map;
}
private void MapCanvas_MouseMove(object sender, MouseEventArgs e)
{
Graphics canvas = Graphics.FromImage(map);
for (int i = 0; i <= map.Width; i++)
for (int j = 0; j <= map.Height; j++)
if (map.GetPixel(i, j) == Color.Red)
canvas.DrawLine(new Pen(Color.Blue), i, j, i + 1, j + 1);
// map.SetPixel(i, j, map.GetPixel(i, j)); // also doesn't work
//MapCanvas.Refresh();
MapCanvas.Invalidate();
canvas.Dispose();
}
}
}
答案 0 :(得分:1)
您要显示的代码永远不会修改画布/地图图像,除非您对未共享的map
图像进行其他一些更改。在循环中,您测试map.GetPixel
,但map
在构造函数中创建为空白图像,因此其像素都不会是Color.Red
。您是否打算反对您的模板进行测试?
另外,您可能需要查看有关比较颜色的this question。它建议在基本颜色比较中使用.ToArgb()
方法对颜色结构使用==
和Equals
做的不仅仅是比较颜色值。