簡體   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