Graphics.DrawImage 可以显示Bitmap 直接把Bitmap给PictureBox.image赋值却显示不了
时间: 2024-01-23 12:03:34 浏览: 135
是的,Graphics.DrawImage 可以用来绘制一张图片到另一张图片上,而PictureBox.image则是用来在窗体上显示图片的。虽然两者都可以操作图片,但是它们的用途和实现方式是不同的。
如果您想要在PictureBox中显示一张Bitmap图片,可以通过以下方式实现:
```
Bitmap bmp = new Bitmap("image.bmp"); // 从文件中读取Bitmap图片
pictureBox1.Image = bmp; // 将Bitmap图片赋值给PictureBox的Image属性
```
如果您已经有了一个Bitmap对象,并且想要在另一个Bitmap上绘制它,可以通过以下方式实现:
```
Bitmap bmp1 = new Bitmap("image1.bmp"); // 从文件中读取第一张Bitmap图片
Bitmap bmp2 = new Bitmap("image2.bmp"); // 从文件中读取第二张Bitmap图片
Graphics g = Graphics.FromImage(bmp2); // 获取第二张Bitmap的Graphics对象
g.DrawImage(bmp1, new Point(0, 0)); // 将第一张Bitmap绘制到第二张Bitmap上
```
希望以上回答能够帮到您,如有疑问请随时追问。
相关问题
c#graphics.drawimage
好的,我明白了。关于你的问题,Graphics.DrawImage 方法是 C# 中用于绘制图像的方法之一。它可以将一个图像绘制到另一个图像或控件上。该方法有多个重载,可以根据需要选择使用。
例如,以下代码将一个名为 image 的 Bitmap 对象绘制到名为 pictureBox 的 PictureBox 控件上:
```
Graphics g = pictureBox.CreateGraphics();
g.DrawImage(image, 0, 0);
```
opencvsharp 在picturebox的image上画线条
OpenCVSharp是一个.NET库,它封装了OpenCV的功能,使得在.NET应用程序中可以方便地处理图像和视频。要在PictureBox控件的Image属性上使用OpenCVSharp画线条,你需要先加载图像,然后创建一个Graphics对象,并利用OpenCVSharp提供的函数绘制线条。
以下是一个简单的步骤:
1. 首先,确保已经安装了OpenCVSharp NuGet包。
2. 加载pictureBox.Image到Mat对象(OpenCV的核心数据结构),以便进行处理:
```csharp
using OpenCvSharp;
// ...
private void pictureBox_Loaded(object sender, EventArgs e)
{
Mat img = Cv2.ImRead(pictureBox.Image.Location, ImreadModes.Color);
}
```
3. 创建一个Graphics对象并将其关联到PictureBox的Image:
```csharp
private Graphics graphics;
public Form1()
{
InitializeComponent();
pictureBox.Paint += PictureBox_Paint;
}
private void PictureBox_Paint(object sender, PaintEventArgs e)
{
if (img != null)
{
graphics = e.Graphics;
// 将Image转换为Graphics compatible格式
graphics.DrawImage(img.ToBitmap(), pictureBox.ClientRectangle);
}
}
```
4. 现在你可以使用OpenCVSharp的DrawLine方法来画线,例如:
```csharp
Point start = new Point(50, 50);
Point end = new Point(150, 150);
Scalar color = new Scalar(0, 0, 255); // BGR颜色模式,红色
graphics.DrawLine(Pens.Red, start, end);
```
5. 最后别忘了清理:
```csharp
~Form1()
{
img?.Dispose();
graphics?.Dispose();
}
```
阅读全文