pictureBox1 画ROI裁剪后在pictureBox2中显示
时间: 2024-05-15 21:13:21 浏览: 18
要实现这个功能,你需要先在pictureBox1中绘制ROI(感兴趣区域),然后将该ROI裁剪并显示在pictureBox2中。
下面是一个简单的示例代码,演示如何在C#中实现这个功能:
```csharp
// 在pictureBox1中绘制ROI
Rectangle roi = new Rectangle(50, 50, 100, 100);
Graphics g = pictureBox1.CreateGraphics();
g.DrawRectangle(Pens.Red, roi);
// 将ROI裁剪并显示在pictureBox2中
Bitmap bmp = new Bitmap(pictureBox1.Image);
Bitmap roiBmp = bmp.Clone(roi, bmp.PixelFormat);
pictureBox2.Image = roiBmp;
```
在这个示例中,我们首先定义一个矩形roi,表示ROI的位置和大小。然后,我们在pictureBox1中创建一个Graphics对象,使用红色笔绘制该矩形,以显示ROI的位置。
接下来,我们从pictureBox1中获取原始图像,并使用Clone方法将ROI裁剪出来。最后,我们将裁剪后的图像显示在pictureBox2中。
请注意,这只是一个简单的示例,你可能需要根据实际情况进行修改和调整。
相关问题
picturebox画ROI
在使用PictureBox画ROI时,你可以按照以下步骤进行操作:
1. 首先,你需要准备一些相关的变量和列表来存储ROI的信息。这包括一个存放ROI矩形的列表(List<RectangleF>),若干状态变量(如默认状态、选择状态)、缩放比例(winratio和sizeratio)、选中的ROI(selectrect)和正在绘制中的ROI(drawrect)等。
2. 接下来,你需要在PictureBox中绘制ROI。你可以通过鼠标事件来实现ROI的绘制。当鼠标点击时,记录下鼠标点击的坐标(相对于图像的坐标),并且开始绘制ROI。当鼠标移动时,根据当前鼠标的坐标和之前记录的鼠标点击坐标,计算出绘制的ROI的大小和位置,并实时更新绘制的ROI(drawrect)。当鼠标释放时,将绘制的ROI添加到ROI列表中,并清除绘制中的ROI。
3. 此外,你还可以根据窗口的大小来调整图片的显示比例。通过计算图片的宽高比和窗口的宽高比,确定图片应该如何缩放以适应窗口。同时,记录下窗口大小的固定比例(winratio)和图片的真实缩放比例(sizeratio)。
以上是使用PictureBox画ROI的一般步骤,你可以根据具体需求进行相应的调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [自定义窗口交互控件:绘制多个ROI并修改](https://blog.csdn.net/weixin_42253874/article/details/124476577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
c# 多线程中 pictureBox图片上显示红色ROI
要在pictureBox中显示红色ROI,你需要在多线程中使用`Invoke`方法更新UI。
以下是一个示例代码:
```csharp
private void UpdateROI(Rectangle roi)
{
if (pictureBox1.InvokeRequired)
{
pictureBox1.Invoke((MethodInvoker)delegate ()
{
UpdateROI(roi);
});
}
else
{
using (Graphics g = pictureBox1.CreateGraphics())
{
Pen pen = new Pen(Color.Red, 2);
g.DrawRectangle(pen, roi);
}
}
}
```
在这个示例中,`UpdateROI`方法会在多线程中被调用,如果当前线程不是UI线程,那么将使用`Invoke`方法在UI线程上执行`UpdateROI`方法。
在UI线程上,使用`CreateGraphics`方法创建一个Graphics对象,并使用`DrawRectangle`方法绘制一个红色边框的矩形。
你可以在你的代码中调用`UpdateROI`方法来更新pictureBox中的ROI。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)