none
C# 使用 BitBlt 問題 RRS feed

  • 問題

  • 執行後沒貼圖的效果,picResult他還是只顯示 011.jpg ,沒有010 貼在011的效果

    private void test1234()
            {
                picResult.Image = Image.FromFile(Application.StartupPath + "\\011.jpg");
                Bitmap imgM = new Bitmap(Application.StartupPath + "\\010.jpg");

                Graphics g1 = Graphics.FromImage(imgM);
                Graphics g2 = picResult.CreateGraphics();

                IntPtr dc1 = g1.GetHdc();
                IntPtr dc2 = g2.GetHdc();

                Win32Support.BitBlt(dc2, 0, 0, imgM.Width, imgM.Height, dc1, 0, 0, Win32Support.TernaryRasterOperations.SRCCOPY);

                g1.ReleaseHdc(dc1);
                g2.ReleaseHdc(dc2);
                g1.Dispose();
                g2.Dispose();
            }

    Win32Support 來源
    http://www.codeproject.com/KB/GDI-plus/flicker_free.aspx

    picResult = pictureBox
    011.jpg = 524 x 456
    010.jpg = 169 x 377

    2009年9月30日 上午 06:57

解答

  • 我哩咧
    終於知道問題在哪了。

    BitBlt 這個鬼東西只能處理二個『可見的』物件
    例如兩個picturebox
    其中一個不是可見的物件,出來的就是『黑黑黑』的畫面
    =.=a
    看來只能用陣列方式背景處理了。

    • 已標示為解答 ㄚ笠市 2009年9月30日 下午 01:10
    2009年9月30日 下午 01:10

所有回覆