我从我看到的一个例子中做到了这一点,它从未抛出任何错误,但图像显示为灰色. 有一个更好的方法吗? private unsafe void menuItem7_Click(object sender, EventArgs e) { var settings = Utility.GatherLocalSet
有一个更好的方法吗?
private unsafe void menuItem7_Click(object sender, EventArgs e) { var settings = Utility.GatherLocalSettings(); openFileDialog1.InitialDirectory = settings.SavePath; openFileDialog1.Filter = "Scan Files (*.jpg)|*.jpg"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { byte[] openFile = File.ReadAllBytes(openFileDialog1.FileName); fixed (byte* p = openFile) { IntPtr img = (IntPtr)p; frmContainer newScan = new frmContainer(img); newScan.MdiParent = this; newScan.Text = Path.GetFileName(openFileDialog1.FileName) + " [Saved]"; newScan.Show(); } } }
PS:我检查了csproj以允许构建中的不安全代码.
试试这个,IntPtr pval = IntPtr.Zero; System.Drawing.Imaging.BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); try { pval=bd.Scan0; ... } finally { bmp.UnlockBits(bd); }