none
請問如何把圖片切成兩半? RRS feed

  • 問題

  • 新手提問請多包含。

    請問如何把圖片切成兩半呢?

     

    Bitmap bm=new Bitmap(filename);
    int sizey=bm2.heigth;
    Bitmap bm2=new Bitmap(bm.width,sizey);
    for (int x=0,x<bm.width,x++)
    for (int y=0;y<sizey;y++)
    bm2.SetPixel(x,y,bm.GetPixel(x,y));

    pictureBox.Image=bm;

     

    我參考的代碼是這個,但是圖一直顯示不出來,

    ps.我想問一下中間的兩個迴圈是什麼意思XD

    2011年9月30日 上午 11:28

解答

  • Graphics.DrawImage

    可以任意重繪你要的範圍到新的 Image 上,這樣就等於切一半了。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年9月30日 下午 12:22
  • 您好

    你的程式碼錯誤蠻多的

    兩個迴圈就是跑 bm2 的所有 Pixel,參考以下代碼看看


                Bitmap bm= new Bitmap(filename);
                int sizey=bm.Height / 2;
                Bitmap bm2=new Bitmap(bm.Width,sizey);
                for (int x = 0; x < bm.Width;x++)
                    for (int y = 0; y < sizey; y++)
                        bm2.SetPixel(x, y, bm.GetPixel(x, y));

                pictureBox.Image = bm2;

     

    比較好的做法還是 tihs 跟 心冷熱情媳前輩提供的方式


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年10月1日 上午 12:51
    版主
  • 不好意思,再度提問很基本的問題…

    請問如果我切成兩半,只要下半的話要怎麼寫呢?

    謝謝你~~~~~


                Bitmap bm = new Bitmap(filename);
                int sizey = bm.Height / 2;
                Bitmap bm2 = new Bitmap(bm.Width, sizey);
                for (int x = 0; x < bm.Width; x++)
                    for (int y = 0; y < sizey; y++)
                        bm2.SetPixel(x, y, bm.GetPixel(x, y + sizey));

                pictureBox.Image = bm2;


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年10月1日 上午 03:50
    版主
  • 心冷大不是已經告訴你了嗎?

    Graphics.DrawImage

    可以任意重繪你要的範圍到新的 Image 上,這樣就等於切一半了。

     

    Bitmap bm=new Bitmap(filename);
    Point bottomHalf = new Point(0, bm.Height/2);
    Bitmap bm2 = DrawImage(bm, bottomHalf);
    pictureBox.Image = bm2;


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    • 已編輯 Alex_Lee 2011年10月1日 上午 05:32
    • 已標示為解答 Hsingyu Huang 2011年10月1日 上午 07:01
    2011年10月1日 上午 05:27

所有回覆

  • 您可以利用CropImage類別來切割圖片
    2011年9月30日 上午 11:59
  • Graphics.DrawImage

    可以任意重繪你要的範圍到新的 Image 上,這樣就等於切一半了。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年9月30日 下午 12:22
  • 您好

    你的程式碼錯誤蠻多的

    兩個迴圈就是跑 bm2 的所有 Pixel,參考以下代碼看看


                Bitmap bm= new Bitmap(filename);
                int sizey=bm.Height / 2;
                Bitmap bm2=new Bitmap(bm.Width,sizey);
                for (int x = 0; x < bm.Width;x++)
                    for (int y = 0; y < sizey; y++)
                        bm2.SetPixel(x, y, bm.GetPixel(x, y));

                pictureBox.Image = bm2;

     

    比較好的做法還是 tihs 跟 心冷熱情媳前輩提供的方式


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年10月1日 上午 12:51
    版主
  • 謝謝各位大大的熱心幫助,對我都非常的有用!又學到了幾招,感謝賜教!:)

    2011年10月1日 上午 02:44
  • 不好意思,再度提問很基本的問題…

    請問如果我切成兩半,只要下半的話要怎麼寫呢?

    謝謝你~~~~~

    2011年10月1日 上午 03:38
  • 不好意思,再度提問很基本的問題…

    請問如果我切成兩半,只要下半的話要怎麼寫呢?

    謝謝你~~~~~


                Bitmap bm = new Bitmap(filename);
                int sizey = bm.Height / 2;
                Bitmap bm2 = new Bitmap(bm.Width, sizey);
                for (int x = 0; x < bm.Width; x++)
                    for (int y = 0; y < sizey; y++)
                        bm2.SetPixel(x, y, bm.GetPixel(x, y + sizey));

                pictureBox.Image = bm2;


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年10月1日 上午 03:50
    版主
  • 心冷大不是已經告訴你了嗎?

    Graphics.DrawImage

    可以任意重繪你要的範圍到新的 Image 上,這樣就等於切一半了。

     

    Bitmap bm=new Bitmap(filename);
    Point bottomHalf = new Point(0, bm.Height/2);
    Bitmap bm2 = DrawImage(bm, bottomHalf);
    pictureBox.Image = bm2;


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    • 已編輯 Alex_Lee 2011年10月1日 上午 05:32
    • 已標示為解答 Hsingyu Huang 2011年10月1日 上午 07:01
    2011年10月1日 上午 05:27
  • 謝謝我懂了~~~原來是要+sizey!!!

    真的非常感謝你喔~~

    2011年10月1日 上午 07:02