[英]Drawing using a bitmap on PictureBox in C#
我的第一个问题在这里。 而且我敢肯定,这很简单,但是我在任何地方都找不到解决方案,我读了很多书,也无法理解我该怎么做:
System.Drawing.Bitmap
,以便可以访问GetPixel()方法 PictureBox
) 到目前为止,我所拥有的:
Bitmap
-并且可以正常工作( 中为 ) 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();
}
}
}
除非对不共享的map
图像进行其他更改,否则显示的代码将永远不会修改画布/地图图像。 在循环中,您测试map.GetPixel
,但是map
在构造函数中创建为空白图像,因此其像素都不是Color.Red
。 您是否打算针对模板进行测试?
此外,你可能想看看这个问题,其中谈到了对比色。 它建议对于基本颜色比较,在颜色结构上使用.ToArgb()
方法,因为==
和Equals
不只是比较颜色值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.