繁体   English   中英

在C#中的PictureBox上使用位图绘图

[英]Drawing using a bitmap on PictureBox in C#

我的第一个问题在这里。 而且我敢肯定,这很简单,但是我在任何地方都找不到解决方案,我读了很多书,也无法理解我该怎么做:

  • 我有一个* .gif文件,我想将其存储在System.Drawing.Bitmap ,以便可以访问GetPixel()方法
  • 我想在某些控件上绘制我的照片(目前正在尝试PictureBox

到目前为止,我所拥有的:

  • in code) 我创建了一个模板,即文件中的Bitmap -并且可以正常工作( 中为
  • ) 我创建了一个将实际绘制的位图(
  • 我可以将PictureBox图像设置为位图
    • 无法更改此位图。 或者我可以,但是结果不显示
    • 我以为我必须从该位图创建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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM