c#怎样 获得一张图片的句柄
2个回答
2013-04-09
展开全部
你要扫描图片,锁定就可以了啊,把图像数据复制到一个数组里,然后对数组操作完成后把完成后的数组复制回图像就可以了。其实你想操作的就是打开一个设备无关位图,然后对取得设备相关位图中图像的数据。对其扫描。只要得到数组操作就很简单了
// Create a new bitmap.
Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");
// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
// This code is specific to a bitmap with 24 bits per pixels.
int bytes = bmp.Width * bmp.Height * 3;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
// Set every red value to 255.
for (int counter = 0; counter < rgbValues.Length; counter+=3)
rgbValues[counter] = 255;
// Copy the RGB values back to the bitmap
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
// Unlock the bits.
bmp.UnlockBits(bmpData);
// Draw the modified image.
e.Graphics.DrawImage(bmp, 0, 150); 答案补充 唉~~~~,现在回答完问题都没人搭理,要不就被关闭,真没劲啊。
如果这样大家就不要在这里交流了。
// Create a new bitmap.
Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");
// Lock the bitmap's bits.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
// This code is specific to a bitmap with 24 bits per pixels.
int bytes = bmp.Width * bmp.Height * 3;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
// Set every red value to 255.
for (int counter = 0; counter < rgbValues.Length; counter+=3)
rgbValues[counter] = 255;
// Copy the RGB values back to the bitmap
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
// Unlock the bits.
bmp.UnlockBits(bmpData);
// Draw the modified image.
e.Graphics.DrawImage(bmp, 0, 150); 答案补充 唉~~~~,现在回答完问题都没人搭理,要不就被关闭,真没劲啊。
如果这样大家就不要在这里交流了。
2013-04-09
展开全部
Image.FromFile(@"玫瑰.jpg") 答案补充 你是说打开的图片窗口的句柄? 答案补充 PictureBox1.Image = Image.FromFile(@"玫瑰.jpg")
这样图片不是就换了 答案补充 为什么我查了Bitmap,没有GetHdc方法 答案补充 gc.GetHdc();
获取的是与此 Graphics 关联的设备上下文的句柄。
不叫图片的句柄 答案补充 一个图片有句柄?
你要实现隔行扫描,就是要得到Graphics关联设备的句柄吧?
pictureBox1.Handle
这样图片不是就换了 答案补充 为什么我查了Bitmap,没有GetHdc方法 答案补充 gc.GetHdc();
获取的是与此 Graphics 关联的设备上下文的句柄。
不叫图片的句柄 答案补充 一个图片有句柄?
你要实现隔行扫描,就是要得到Graphics关联设备的句柄吧?
pictureBox1.Handle
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询