C# 如何使用getpixel从pictureBox.image和位图bmp创建新图像?
我试图使用Graphics.DrawImage,但我得到的是黑色图像,上面是我正在绘制的红点。为什么我会得到黑色的图像 这就是功能:C# 如何使用getpixel从pictureBox.image和位图bmp创建新图像?,c#,C#,我试图使用Graphics.DrawImage,但我得到的是黑色图像,上面是我正在绘制的红点。为什么我会得到黑色的图像 这就是功能: public Bitmap SaveFromPictureBoxToBitMap(Bitmap image1, Image pbox) { Graphics g = Graphics.FromImage(image1); Point p = new Point(pbox.Width,pbox.Hei
public Bitmap SaveFromPictureBoxToBitMap(Bitmap image1, Image pbox)
{
Graphics g = Graphics.FromImage(image1);
Point p = new Point(pbox.Width,pbox.Height);
g.DrawImage(pbox, p);
image1.Save(@"d:\PictureBoxToBitmap\ptob.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
return newImage;
}
image1是在绘制事件中绘制到的bmp变量。pbox只是pictureBox1.Image和im在trackBar1滚动事件中使用此函数
这是我得到的,我在这里添加了一个屏幕截图:
在背景上,而不是黑色,我需要从pictureBox1中获取图像,但它不起作用。为什么?找到它:
using (Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height))
{
pictureBox1.DrawToBitmap(b, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));
b.Save(@"d:\testit.png", System.Drawing.Imaging.ImageFormat.Png);
}
为什么不将
位图
设置为PictureBox.Image
属性的一个属性,然后在其上绘制而不使用其他位图?我还想知道为什么要在保存图像之前复制它。此外,您可以通过写入newImage=newbitmap(image2)来复制位图
和SaveFromPictureBoxToBitMap
方法中的其余代码就不需要了。对不起,我不能再多呆一会儿看这个了。这可能不是您问题的根本原因,但可能是一个需要解决的问题。在SaveFromPictureBoxToBitMap
方法中,指定newColor
两次,但只使用第二个值。通过写入,您得到的图像是图像的一半,意味着您得到的图像尺寸较小(即原始图像高度的一半)或者只从picturebox获取图像,而不从bmp
获取附加层?后者似乎会出现,因为您只使用picturebox1
中的像素颜色。如果要混合使用这两个图像,请查看Graphics.DrawImage
方法。您可能还需要查看WriteableBitmapExtensions库。它可能有一些您可能会觉得有用的功能。你可能想看看Graphics.DrawImage和它的重载,你在这里重新发明了很多缓慢而不是特别圆的轮子。