1

ここで私の最初の質問。そして、それは簡単なものだと確信していますが、どこにも解決策が見つかりません。たくさん読んだだけで、何をする必要があるのか​​ 理解できません。

  • System.Drawing.BitmapGetPixel() メソッドにアクセスできるように、に保存したい *.gif ファイルがあります。
  • 私は自分の絵をいくつかのコントロールに置きたいです(現在試していPictureBoxます)

これまでのところ、私が持っているもの:

  • ファイルからテンプレートを作成Bitmapします-そしてそれは機能します(コード内のmap_t )
  • 実際に描画されるビットマップを作成します ( map )
  • 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();
        }
    }
}
4

1 に答える 1

1

map表示しているコードは、共有していない画像に他の変更を加えない限り、キャンバス/マップ画像を変更することはありません. map.GetPixelただし、テストするループmapでは、コンストラクターで空白の画像として作成されるため、そのピクセルはいずれもColor.Red. 代わりに、テンプレートに対してテストするつもりでしたか?

また、色の比較について話しているこの質問を見たいと思うかもしれません。基本的な色の比較では、色の値を比較する以上のことを行う.ToArgb()ため、色の構造に対してメソッドを使用することをお勧めします。==Equals

于 2012-04-30T23:02:24.077 に答える